一页书

你永远不会过度准备

类型注解

简介

JDK8 为 @Target 元注解新增了两种类型: TYPE_PARAMETERTYPE_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 可以让注解放在类型的前面

0%