java.lang.annotation.Repeatable是JDK 8引入的新注解,在JDK 8之前注解定义是不可重复的。
Persons.java
定义注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Persons {
//注意:这里方法名必须是value
Person[] value();
Person.java
定义注解,指定@Repeatable
@Repeatable(Persons.class)
public @interface Person{
String role() default "";
}
Man.java
具体使用:指定注解
@Person(role="CEO")
@Person(role="husband")
@Person(role="father")
@Person(role="son")
public class Man {
String name = "";
}
实际应用
if(Man.class.isAnnotationPresent(Persons.class)) {
Persons persons = Man.class.getAnnotation(Persons.class);
for(Person person: persons.value()){
System.out.println(person.role());
}
}