Java Language Controlli delle annotazioni di runtime tramite riflessione


Esempio

L'API Reflection di Java consente al programmatore di eseguire vari controlli e operazioni su campi di classi, metodi e annotazioni durante il runtime. Tuttavia, affinché un'annotazione sia visibile al momento dell'esecuzione, RetentionPolicy deve essere modificato in RUNTIME , come illustrato nell'esempio seguente:

@interface MyDefaultAnnotation {

}

@Retention(RetentionPolicy.RUNTIME)
@interface MyRuntimeVisibleAnnotation {

}

public class AnnotationAtRuntimeTest {

    @MyDefaultAnnotation
    static class RuntimeCheck1 {
    }
    
    @MyRuntimeVisibleAnnotation
    static class RuntimeCheck2 {
    }
    
    public static void main(String[] args) {
        Annotation[] annotationsByType = RuntimeCheck1.class.getAnnotations();
        Annotation[] annotationsByType2 = RuntimeCheck2.class.getAnnotations();

        System.out.println("default retention: " + Arrays.toString(annotationsByType));
        System.out.println("runtime retention: " + Arrays.toString(annotationsByType2));
    }
}