java 元注解 @Repeatable

一 笔记

元注解 @Repeatable

  • java8之后出现的,属于java8的新特性;表示该注解可以在某个元素上重复出现;
  • 注解在java8之前是不能在某个元素上重复出现的;

二 自定义注解容器Persons

自定义注解容器Persons,用于定义可重复的注解;
所有的注解默认继承Annotation;

@Retention(RetentionPolicy.RUNTIME)//需和重复的注解保持一致;
public @interface AnnotationTest08_Persons {
//    提供一个数组,并且这个数组的元素类型必须是Person,即重复出现的注解名数组;
//    属性名必须是value,不能修改为其他属性名
    AnnotationTest08_Person[] value();
}

三 自定义的注解AnnotationTest08_Person ,即可重复使用的注解

自定义的注解AnnotationTest08_Person ,可重复使用的注解;

  • 元注解 @Repeatable 要求参数是一个继承注解的class;
    *Class<? extends Annotation> value();
@Repeatable(AnnotationTest08_Persons.class)
@Retention(RetentionPolicy.RUNTIME) //注解保持到class文件,并且可以被反射机制解析;默认值为RetentionPolicy.CLASS
public @interface AnnotationTest08_Person {
    String role() default "";
}

四 通过反射机制获取重复注解的信息

@AnnotationTest08_Person(role = "son")
@AnnotationTest08_Person(role = "CEO")
@AnnotationTest08_Person(role = "father")
@AnnotationTest08_Person(role = "friend")
public class AnnotationTest08 {
    public static void main(String[] args) {
//        获取类
        Class<AnnotationTest08> annotationTest08Class = AnnotationTest08.class;
//        获取该类使用的重复元注解信息
        Annotation[] annotations = annotationTest08Class.getDeclaredAnnotationsByType(AnnotationTest08_Person.class);
//        输出注解信息
        System.out.println(Arrays.toString(annotations));
    }
}

## 标题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值