1 重复注解
重复注解:允许在同一声明类型(类,属性,或方法)上多次使用同一个注解。重复注解本身必须使用@Repeatable
注解。
一、步骤一:自定义注解MyAnnotation
和包装类注解MyAnnotations
,包装类注解用来放置一组具体的MyAnnotation
注解:
1 | (MyAnnotations.class) |
二、使用注解:
1 | public class TestAnnotation { |
测试:
1 |
|
可以获取
show
方法上注解的两个值。
2 类型注解
Java 8的类型注解扩展了注解使用的范围。新增ElementType.TYPE_USE
和ElementType.TYPE_PARAMETER
。(在@Target
注解上)
ElementType.TYPE_USE
表示该注解能写在使用类型的任何语言中,如声明语句、泛型和强制转换语句中的类型。
ElementType.TYPE_PARAMETER
表示该注解能写在类型变量的声明语句中。
1 | //初始化对象时 |
2.1 类型注解的作用
引用 扩展注解 中的内容:
类型注解被用来支持在java中做强类型检查。配合第三方工具 Checker Framework。可以在编译的时候检测出runtime error(UnsupportedOperationException
; NumberFormatException
;NullPointerException
异常等都是runtime error)。
注意:java 5,6,7版本是不支持注解
@NonNull
,但checker framework 有个向下兼容的解决方案,就是将类型注解@NonNull 用/**/注释起来。这样javac编译器就会忽略掉注释块,但用checker framework里面的javac编译器同样能够检测出@NonNull错误。
通过 类型注解 + checker framework 可以在编译时就找到runtime error。