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.
TYPE
FIELD
METHOD
--Déclaration de l'argument de la méthode PARAMETER
CONSTRUCTOR
--LOCAL_VARIABLE
Déclaration de variable locale
--ʻANNOTATION_TYPE` Déclaration d'annotationPACKAGE
TYPE_PARAMETER
TYPE_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