我是靠谱客的博主 高兴睫毛膏,最近开发中收集的这篇文章主要介绍JDK8新特性之重复注解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

自从java5中引入注解以来,注解的使用就变得非常普遍,并在各个框架和项目中广泛使用,不过注解在同一个地方不能多次使用。为此,JDK8引入了重复注解的概念,允许在同一个地方使用同一个注解。在JDK8中使用@Repeatable注解定义重复注解。

重复注解的使用步骤:

1、定义重复注解容器注解

@Retention(RetentionPolicy.RUNTIME)
@Interface Mytests{
MyTest[] value;
}

2、定义一个可以重复的注解

@Retention(RetentionPolicy.RUNTIME)
@Repeatable(MyTests.class)
@interface MyTest{
String value();
}

3、配置多个重复的注解

@MyTest("tbc")
@MyTest("tba")
@MyTest("tbb")
public class Demo1{
@MyTest("mbc")
@MyTest("mba")
publiv void test() throws NoSuchMethodException{
}
}

4、解析得到指定注解

案例:

//1、定义注解的容器
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnno {
MyAnnotation[] value();
}
//2、定义重复注解
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(MyAnno.class)
@interface MyAnnotation {
String value();
}
//使用注解
@MyAnnotation("类上的注解1111")
@MyAnnotation("类上的注解2222")
@MyAnnotation("类上的注解3333")
public class AnnotationTest {
@Test
@MyAnnotation("方法上的注解1111")
@MyAnnotation("方法上的注解22222")
public void test() throws NoSuchMethodException {
//得到类上的注解
MyAnnotation[] tests
= AnnotationTest.class.getAnnotationsByType(MyAnnotation.class);
for (MyAnnotation ma :tests) {
System.out.println(ma.value());//得到类上注解
}
//得到方法上的注解
MyAnnotation[] methods = AnnotationTest.class.getMethod("test").getAnnotationsByType(MyAnnotation.class);
for (MyAnnotation method : methods) {
System.out.println(method.value());//得到方法上注解
}
}
}

类型注解的使用:

JDK8为@Target元注解新增了2种类型:TYPE_PARAMETER、TYPE_USE.

TYPE_PARAMETER:表示该注解可以写在类型参数的声明语句中,类型参数声明如:<T>

TYPE_USE:表示该注解可以在任何用到类型的地方使用

TYPE_PARAMETER的使用:

@Target(ElementType.TYPE_PARAMETER)
@interface TyptParam{
}

public class ParameterTest<@TyptParam>{
public static void main(String[] args){
}
public <@TyptParam E> void test(String a){
}
}

TYPE_USE的使用:

@Target(ElementType.TYPE_USE)
@interface NotNull{
}
public class TypeTest<@TyptParam T extends String>{
private @NotNull int a = 10;
public static void main(@NotNull String[] args){
@NotNull int x = 1 ;
@NotNull String s = new @NotNull String();
} public <@TyptParam E> void test(String a){
}
}

小结

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

最后

以上就是高兴睫毛膏为你收集整理的JDK8新特性之重复注解的全部内容,希望文章能够帮你解决JDK8新特性之重复注解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部