注解
2-JDK8的重复注解和类型注解
2021-07-08 714 0
简介 重复注解和类型注解介绍
1. JDK8之前可重复注解的写法
package com.ylaihui.annotation2;
public MyAnn {
String value() default "ylaihui";
}
package com.ylaihui.annotation2;
public @interface MyAnnotations {
MyAnn[] value();
}
//MyAnnotationsTest.java
package com.ylaihui.annotation2;
// 注解不能重复
//Duplicate annotation. The declaration of 'com.ylaihui.annotation2.MyAnn' does not have a valid
//@MyAnn("yyyy")
//@MyAnn("lll")
@MyAnnotations({@MyAnn("yyyy"), @MyAnn("llll")})
public class MyAnnotationsTest {
}
2. JDK8可重复注解的写法
package com.ylaihui.annotation3;
import java.lang.annotation.Repeatable;
public MyAnn {
String value() default "ylaihui";
}
package com.ylaihui.annotation3;
import java.lang.annotation.Repeatable;
public @interface MyAnnotations {
MyAnn[] value();
}
//MyAnnotationsTest.java
package com.ylaihui.annotation3;
// JDK1.8 新特性,注解可重复,但是需要配置,以下两种写法等价
//@MyAnnotations({@MyAnn("yyyy"), @MyAnn("llll")})
public class MyAnnotationsTest {
}
3. JDK8新特性类型注解
JDK1.8之后,关于元注解@Target的参数类型ElementType枚举值多了两个:TYPE_PARAMETER,TYPE_USE。
在Java 8之前, 注解只能是在声明的地方所使用, Java8开始, 注解可以应用在任何地方。
ElementType.TYPE_PARAMETER 表示该注解能写在类型变量的声明语句中(如: 泛型声明) 修饰的类型可以通过反射获取
ElementType.TYPE_USE 表示该注解能写在使用类型的任何语句中。
package com.ylaihui.annotation4;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
@Target({TYPE_PARAMETER, TYPE_USE})
public @interface MyAnn {
String[] value() default "ylaihui";
}
//AnnotationTest.java
package com.ylaihui.annotation4;
import java.util.ArrayList;
class Annotations<@MyAnn T>{
public void info(@MyAnn String string) throws @MyAnn RuntimeException{
ArrayList<new ArrayList<>(); String> list =
int d = ( int)100.00;
System.out.println(string);
}
}
public class AnnotationTest {
public static void main(String[] args) {
}
}