Annotation an Annotation selbst annotieren

Thomas Darimont

Erfahrenes Mitglied
Hallo,

in Java ist es möglich Annotations (mit Element Target: Type) an sich selbst zu annotieren. Dies kann u.a. dann nützlich sein, wenn man von einer Annotation die default Werte benötigt.

Schaut mal hier:
Java:
package de.tutorials.training;


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


/**
 * Author: tom
 */
public class AnnotationHackExample {
    public static void main(String[] args) {
        C0 c0 = new C0();
        C1 c1 = new C1();


        System.out.println(getAnnoValue(c0));
        System.out.println(getAnnoValue(c1));
    }


    public static String getAnnoValue(Object o) {
        Class<?> c = o.getClass();
        if (!c.isAnnotationPresent(Anno.class)) {
            c = Anno.class;
        }
        Anno anno = c.getDeclaredAnnotation(Anno.class);
        return anno.value();
    }


    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    @Anno
    @interface Anno {
        String value() default "default";
    }


    @Anno("custom")
    static class C0 {
    }


    static class C1 {
    }
}

Ausgabe:
Code:
custom
default

Gruß Tom
 
Zurück