JDK8新注解

1. 重复注解

重复注解的使用步骤:
1、定义重复的注解容器注解
2、定义一个可以重复的注解
3、配置多个重复的注解
4、解析得到指定的注解

// 3、配置重复注解
@MyTest("a")
@MyTest("b")
@MyTest("c")
public class Demo01 {
    public static void main(String[] args) throws NoSuchMethodException {
        // 4、解析得到指定的注解 类上
        // getAnnotationsByType获取解析重复注解
        MyTest[] annotationsByType = Demo01.class.getAnnotationsByType(MyTest.class);
        for (MyTest myTest : annotationsByType) {
            System.out.println(myTest);
        }

        // 4、解析得到指定的注解 方法上
        MyTest[] tests = Demo01.class.getMethod("test").getAnnotationsByType(MyTest.class);
        for (MyTest test : tests) {
            System.out.println(test);
        }
    }

    @MyTest("fa")
    @MyTest("fb")
    public void test() {
        
    }

}

// 1、定义重复的注解容器注解
@Retention(RetentionPolicy.RUNTIME)
@interface MyTests { // 重复注解容器
    MyTest[] value();
}

// 2、定义一个可以重复的注解
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(MyTests.class)
@interface MyTest {
    String value();
}

2. 类型注解

JDK8为@Target元注解新增了两种类型:TYPE_PARAMETERTYPE_USE

  • TYPE_PARAMETER:表示该注解能写在类型参数的声明语句中,类型参数声明如:<T><T extends Person>
  • TYPE_USE:表示注解可以在任何用到类型的地方使用。
public class Demo02<@TypeParam T> {
    private @NotNull int a = 10;

    public void test(@NotNull String str,@NotNull int num) {

    }

    public <@TypeParam E extends Integer> void test1() {

    }
}

@Target(ElementType.TYPE_PARAMETER)
@interface TypeParam {

}

@Target(ElementType.TYPE_USE)
@interface NotNull {

}

3、小结

通过@Repeatable元注解可以定义可重复注解,TYPE_PARAMETER可以让注解放在泛型上, TYPE_USE可以让注解放在类型的前面。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容