Package caseine.tags

Annotation Interface ImplementationToRemove


@Retention(RUNTIME) @Target(TYPE) public @interface ImplementationToRemove
Pour enlever des déclarations d'implémetation ou d'extension.
Author:
Yvan Maillot <yvan.maillot@uha.fr>

L'annotation @caseine.tags.ImplementationToRemove

L'annotation @ImplementationToRemove enlève des déclarations d'interfaces d'une classe.

Cible

@ImplementationToRemove s'applique aux classes ou aux interfaces.

Formes d'emploi

@ImplementationToRemove s'emploie uniquement comme une annotation monovaluée : (e.g. @ImplementationToRemove("Cloneable").

Effet

L'annotation @ImplementationToRemove a pour effet de supprimer à l'étudiant une ou des déclarations d'implémentation d'interface de la liste des implémentations d'une classe ou une ou des déclarations d'extension d'interface de la liste des extensions d'une interface. La valeur de l'annotation peut-être une chaîne ou un tableau de chaînes qui sont le ou les noms des interfaces à enlever.

Exemple 1

 @ImplementationToRemove("I1")
 public class K implements I1, I2 {

 }
 

sera remplacé par

 public class K implements I2 {

 }
 

Exemple 2

 @ImplementationToRemove("I1")
 public class K implements I1 {

 }
 

sera remplacé par

 public class K {

 }
 

Exemple 3

 @ImplementationToRemove({"I1", "I2"})
 public class K implements I1, I2 {

 }
 

sera remplacé par

 public class K {

 }
 

Précautions

L'annotation @ImplementationToRemove peut livrer à l'étudiant un code non compilable.

C'est normal puisque des fragments de code disparaissent. Des problèmes peuvent survenir s'ils sont invoqués par ailleurs, notamment dans les tests unitaires (mais pas uniquement).

Il faut donc l'utiliser en connaissance de cause et

  • soit, enlever des fragments qui n'engendrent pas de code non compilable,
  • soit, utiliser l'introspection dans les tests unitaires,
  • soit, prévenir l'étudiant.
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    Définit la ou les interfaces à retirer
  • Element Details

    • value

      String[] value
      Définit la ou les interfaces à retirer
      Returns:
      un tableau des noms des interfaces à retirer