Java中的注解(Annotation)
Annotation介绍
- Annotation其实是代码中的标识符,可以在编译时,类加载时,运行时被读取,可以在不改变原有逻辑的情况下,在源文件中嵌入一些信息
- 在JavaSE中注解的功能就只是一些标识符,在JavaEE中注解可以代替繁琐的代码或则XML文件
Annotation的使用场景
- 场景一:生成文档相关注释(比如在文件头部添加作者、版本等其他信息)
- 场景二:在编译时进行格式检查(JDK内置三种基本注解)
- @Override:用于重写父类的方法
- @Deprecated:过时的,用来修饰已过时的方法,一般在上面都会有推荐使用新的方法
- @SuppressWarnings:抑制编译器警告,在idea中未使用的对象会呈现灰色,在eclipse中则前面会爆警告
- 场景三:实现代替配置文件的功能
如何自定义注解
- 注解声明为@interface
- 内部定义成员,通常用value表示
- 可以指定内部成员的默认值,使用default定义
- 如果没有指定默认值的话,使用时必须指明成员的值
- 如果注解中没有内部成员,则只是起到一个标识作用
public @interface MyAnnotation {
String[] value();
}
//使用时
@MyAnnotation("value = 1")
JDK中提供的4种元注解
元注解的作用:为现有的注解进行解释说明
- Retention:定义现有注解的生命周期
- SOURCE:注解将被编译器丢弃,也就是说只是在写代码的时候起到一个提示作用比如@Override
- CLASS:默认行为,注解将被带到.class文件中,但不会运行时保留
- RUNTIME:在运行时会起作用,可以实现代替配置文件作用,只有此注解才会被反射机制捕获
- Target:用于修饰注解用在什么地方,比如类中,构造方法中等
- Documented:当文件被javaDoc解析成api文档时,保留注解信息
- Inherited:注解可以被继承,比如父类注解被该元注解修饰,那么子类默认继承注解
JDK8中注解的新特性
- 可重复注解
- 创建一个新的注解,将需要重复的注解的类型作为数组定义value
- 在需要重复的注解上声明@Repeatable,并将新的注解作为参数传入(注解名.class)
- 两个注解的Retention和Target必须相同
- 类型注解
- ElementType.TYPE_PARAMETER:表示该注解可以写在类型变量的声明语句中(如:泛型申明)
- ElementType.TYPE_USE:表示该注解可以写在使用类型的任何语句中
27万+

被折叠的 条评论
为什么被折叠?



