3.使用@Documented
这个注解用于指定被修饰的注解类将被javadoc工具提取成文档,如果定义注解类时使用了这个注解修饰,则所有使用该注解修饰的程序员苏API文档将会包含该注解说明。
例如:@Documentedpublic @interface Testable{}
4.使用@Inherited
这个注解指定被他修饰的注解将具有继承性——如果某个类使用了@Xxx,则其子类将自动被@Xxx修饰
5.使用@Result
作用是在同一个程序元素前使用多个相同类型的注解在java8之前只能通过@Results配置,
java8简化了它的写法例如:
@test(age=5)@test(age=8)public void resultTest(){}
6.使用类型注解
创建类实例new@InternedMyObject();
类型映射myString = (@NonNullString) str;
implements 语句中class UnmodifiableList<T> implements@ReadonlyList<@Readonly T> { ... }
throw exception声明void monitorTemperature() throws@CriticalTemperatureException { ... }
等等地方都可以用类型注解
新增ElementType.TYPE_USE和ElementType.TYPE_PARAMETER(在Target上)新增的两个注释的程序元素类型 ElementType.TYPE_USE 和 ElementType.TYPE_PARAMETER用来描述注解的新场合。ElementType.TYPE_PARAMETER 表示该注解能写在类型变量的声明语句中。
ElementType.TYPE_USE 表示该注解能写在使用类型的任何语句中(eg:声明语句、泛型和强制转换语句中的类型)。还是那句话,这些注解本身是没有意义的。要靠自己实现类型注解的检查框架,或者第三方,类型注解最大的意义在于,让编译器执行更严格的检查,保证代码更加的健壮。