Java SE 在 java.lang、java.lang.annotation 和 javax.annotation 包中定义了大量注解接口
1 用于编译的注解
- @Deprecated:不再鼓励使用
- @SuppressWarnings:阻止特定警告
- @Override:覆盖超类方法
- @Generated:供代码生成工具使用
2 用于管理资源的注解
- @PostConstruct:对象构建之后调用
- @PreDestroy:对象移除之前调用
- @Resource:资源注入
3 元注解
4个元注解
- @Target:限制注解应用项,通过枚举类ElementType
- @Retention:注解保留时间,通过枚举类RetentionPolicy
- @Documented:归档工具提示
- @Inherited:继承注解,子类也有相同注解
4 可重复注解
JDK 8 开始支持可重复注解
为了兼容,可重复注解的实现这要提供一个容器注解,将重复注解存储到一个数组中
@Repeatable(TestCases.class)
@interface TestCase{
String params();
String expected();
}
@interface TestCases(){
TestCase[] value();
}
只要用户提供了多个 @TestCase 注解,会被自动包装到 @TestCases 注解中。
重复注解通过 getAnnotation 找不到,要 getAnnotationsByType 来找