简介
JDK8 为 @Target
元注解新增了两种类型: TYPE_PARAMETER
,TYPE_USE
。
TYPE_PARAMETER
:表示该注解能写在类型参数的声明语句中。 类型参数声明如: <T>
TYPE_USE
:表示注解可以再任何用到类型的地方使用。
这使得在 Java8 环境下,注解几乎可以使用在任何元素上:局部变量、接口类型、超类和接口实现类,甚至可以用在函数的异常定义上
TYPE_PARAMETER的使用示例
@Target(ElementType.TYPE_PARAMETER)
@interface TyptParam {
}
public class Demo02<@TyptParam T> {
public static void main( String[] args) {
}
public <@TyptParam E> void test( String a) {
}
}
TYPE_USE的使用示例
@Target(ElementType.TYPE_USE)
@interface NotNull {
}
public class Demo02<@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 可以让注解放在类型的前面