1. 概述
1.2 简介
Java 8 对注解处理提供了两点改进,可重复的注解及可用于类型的注解
2. 重复注解
要想定义重复注解,必须给它定义的容器类,还要使用 @Repeatable
注解修饰一下
@Repeatable(RepetitionAnnotations.class)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.RUNTIME)
public @interface RepetitionAnnotation {
String value() default "ling";
}
/**
* 容器类
*/
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.RUNTIME)
public @interface RepetitionAnnotations {
RepetitionAnnotation[] value();
}
测试方法
public class AnnotationTest {
@Test
public void t1() throws Exception {
Class<AnnotationTest> clazz = AnnotationTest.class;
Method method = clazz.getMethod("show");
// 获取方法上的注解
RepetitionAnnotation[] ras = method.getAnnotationsByType(RepetitionAnnotation.class);
for (RepetitionAnnotation repetitionAnnotation : ras) {
System.out.println(repetitionAnnotation.value());
}
}
@RepetitionAnnotation("Hello")
@RepetitionAnnotation("World")
public void show() {
}
}
3. 类型注解
就是向 @Target
添加一种类型 TYPE_PARAMETER
@Repeatable(RepetitionAnnotations.class)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE,TYPE_PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface RepetitionAnnotation {
String value() default "ling";
}
使用
@RepetitionAnnotation("Hello")
@RepetitionAnnotation("World")
public void show(@RepetitionAnnotation String str) {
}
转载请注明出处:
文章地址:Java 8 新特性之重复注解与类型注解
文章作者:凌风
原始连接:https://lingfeng.me/blog/java/java8-repetition/
许可协议:转载请注明原文链接及作者。