@Repeatable
对同一种注解多次使用就会使用到@Repeatable
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Repeatable {
举例:
1. 申明RolesTest注解包含多重角色
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RolesTest {
RoleTest[] value();
}
2.申明RoleTest注解
@Documented
@Repeatable(RolesTest.class)
public @interface RoleTest {
String value() default "";
}
3. 申明测试类,设定多重角色
@RoleTest("apple")
@RoleTest("pear")
@RoleTest("orange")
public class MainRepeatable {
}
4. 单元测试:
@Test
public void testRepeat(){
if(MainRepeatable.class.isAnnotationPresent(RolesTest.class)) {
RolesTest rt=MainRepeatable.class.getAnnotation(RolesTest.class);
for(RoleTest t:rt.value()){
logger.info(t.value());
}
}
}
5.结果: