重复注解
/**
* 重复注解:同一个地方可以多次使用的注解,@Repeatable
* @Repeatable 的参数是一个注解容器,该容器用来存放自己的实例
* 注解类型基本包罗了java的任意地方
*/
public class MyRepeatAnnotation {
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Filters{
Filter[] value();
}
@Target( ElementType.TYPE )
@Retention( RetentionPolicy.RUNTIME )
@Repeatable( Filters.class )
public @interface Filter {
String value();
};
@Filter( "filter1" )
@Filter( "filter2" )
public interface Filterable {
}
@Test
public void test() {
Filter[] filters = Filterable.class.getAnnotationsByType(Filter.class);
for (Filter oneFilter : filters) {
System.out.println(oneFilter.value());
}
}
}