Possibilité d'ajouter des informations supplémentaires aux classes, méthodes, packages, etc.
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;
@Retention(RUNTIME)
@Target(TYPE)
public @interface TestAnnotation {
String testValue();
}
@Retention
Spécifie la plage dans laquelle les informations d'annotation sont conservées.
--SOURCE Rejeté par le compilateur.
--CLASS Enregistré dans le fichier de classe par le compilateur, mais pas lu lors de l'exécution. (Défaut)
--RUNTIME Enregistré dans le fichier de classe par le compilateur et lu au moment de l'exécution.
@Target
Spécifie où l'annotation peut être appliquée.
TYPEFIELDMETHOD
--Déclaration de l'argument de la méthode PARAMETERCONSTRUCTOR
--LOCAL_VARIABLE Déclaration de variable locale
--ʻANNOTATION_TYPE` Déclaration d'annotationPACKAGETYPE_PARAMETERTYPE_USE est utiliséMODULE@interface
Définissez l'annotation.
@TestAnnotation(testValue = "test value")
public class AnnotatedClass {
}
Cette fois, nous annotons la classe.
public class GetValue {
public static void main(String[] args) {
try {
Class<?> targetClass = Class.forName("AnnotatedClass");
var testAnnotation = (TestAnnotation) targetClass.getAnnotation(TestAnnotation.class);
System.out.println(testAnnotation.testValue());
} catch (Exception e) {
//Traitement des exceptions
}
}
}
Lorsqu'elle est exécutée, la valeur de test est sortie.
Recommended Posts