java学习笔记,注解及其应用
Java注解
注解定义
1 |
|
注解中的元素
注解中的元素只支持:
- 基础数据类型
- String
- Class
- enum
- Annotation
- 上述类型的数组
编译器对默认值的限制
- 元素不能有不确定的值,即要么具有默认值,要么在使用时提供元素的值
- 对于非基本类型的元素,无论正在源码中还是在注解接口中定义默认值,都不能为null
注解不支持继承
注解不能继承,但注解在编译后,编译器会自动继承java.lang.annotation.Annotation
接口,使用反编译可以看到
快捷方式
注释中定义了以value
为名的元素,并且在使用该注解时,如果该元素是唯一需要赋值的元素,那么无需使用value = key
的语法,只需在括号中给出value
元素值即可,这可以应用于任何合法类型的元素,但限制了元素名必须为value
Deprecated
使用@Deprecated注解的方法代表已过时,不推荐使用的方法,再idea的提示种会以删除线的形式展现,但是仍能正常使用
Override
使用@Override注解的方法代表是重写了父类的某个方法,当我们方法的名字出错时,编译器就会报错
Test
使用@Tes注解饰的方法,可以进行单元测试
SuppressWarnings
使用@SuppressWarnings注解的方法,再idea中将不再给出该方法内的警告,不推荐使用
@SuppressWarnings中的方法有:
all,抑制所有警告
boxing,抑制与封装/拆装作业相关的警告
ccast,抑制与强制类型转换相关的警告
…
元注解
用来注解定义注解时的注解
Documented
使用@Documented注解的注解在生成API文档时将不会被忽略
Retention
注解可见度,定义了注解的生命周期
@Retention包含一个RetentionPolicy类型的属性value,Enum RetentionPolicy是一个枚举类型,
分为三个等级:
- RetentionPolicy.Source 源码级别,注解只被保留在源码,编译成class后,注解被遗弃
- RetentionPolicy.CLASS 类文件级别, 注解被保留到class文件,但jvm加载class文件后将被遗弃,这是默认的生命周期
- RetentionPolicy.RUNTIME 运行时,注解不仅被保留到class文件中,jvm加载后仍然存在
Target
@Target用来约束注解可以应用的地方(如方法、类或字段),其中ElementType是枚举类型,表示可能的取值范围,取值如下:
1 | public enum ElementType{ |