Möglichkeit, Klassen, Methoden, Paketen usw. zusätzliche Informationen hinzuzufügen.
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
Gibt den Bereich an, in dem die Anmerkungsinformationen gespeichert werden.
--SOURCE
Vom Compiler verworfen.
--CLASS
Wird vom Compiler in der Klassendatei aufgezeichnet, aber zur Laufzeit nicht gelesen. (Standard)
--RUNTIME
Wird vom Compiler in der Klassendatei aufgezeichnet und zur Laufzeit gelesen.
@Target
Gibt an, wo die Anmerkung angewendet werden kann.
TYPE
Klassen-, Schnittstellen- oder AufzählungstypdeklarationMETHOD
MethodendeklarationLOCAL_VARIABLE
Deklaration der lokalen Variablen
--ANNOTATION_TYPE
AnmerkungserklärungPAKET
PaketerklärungTYPE_PARAMETER
TYPE_USE
verwendet wirdMODULE
Moduldeklaration@interface
Definieren Sie die Anmerkung.
@TestAnnotation(testValue = "test value")
public class AnnotatedClass {
}
Dieses Mal kommentieren wir die Klasse.
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) {
//Umgang mit Ausnahmen
}
}
}
Bei der Ausführung wird der Testwert ausgegeben.
Recommended Posts