package com.logicbig.example.clazz;
import java.util.Arrays;
public class GetAnnotationsByTypeExample {
public static void main(String... args) {
Deprecated[] annotationsByType = MyClass.class
.getAnnotationsByType(Deprecated.class);
System.out.println(Arrays.asList(annotationsByType));
}
@Deprecated
private static class MyClass {
}
}
Output
[@java.lang.Deprecated()]
package com.logicbig.example.clazz;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
public class GetAnnotationsByTypeExample2 {
public static void main(String... args) {
System.out.println("-- using getAnnotation(MultiAccess.class) --");
MultiAccess multiAccess = MyClass.class
.getAnnotation(MultiAccess.class);
for (Access access : multiAccess.value()) {
System.out.println(access);
}
System.out.println("-- using getAnnotationsByType(Access.class) --");
Access[] accessAnnotations = MyClass.class
.getAnnotationsByType(Access.class);
for (Access access : accessAnnotations) {
System.out.println(access);
}
}
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(MultiAccess.class)
public @interface Access {
String value() default "ADMIN";
}
@Retention(RetentionPolicy.RUNTIME)
public @interface MultiAccess {
Access[] value() default @Access;
}
@MultiAccess({@Access("SUPER_USER"), @Access("CUSTOMER")})
private static class MyClass {
}
}
Output
-- using getAnnotation(MultiAccess.class) --
@com.logicbig.example.clazz.GetAnnotationsByTypeExample2$Access(value=SUPER_USER)
@com.logicbig.example.clazz.GetAnnotationsByTypeExample2$Access(value=CUSTOMER)
-- using getAnnotationsByType(Access.class) --
@com.logicbig.example.clazz.GetAnnotationsByTypeExample2$Access(value=SUPER_USER)
@com.logicbig.example.clazz.GetAnnotationsByTypeExample2$Access(value=CUSTOMER)