java 注解基础
2024-10-20 20:59:59
java 内置注解
注解 | 作用 | 描述 |
---|---|---|
@Override | 将覆盖父类中的方法 | 作用在子类的方法上 |
@Deprecated | 代码被弃用 | 使用了被@Deprecated注解的代码则编译器将发出警告 |
@SuppressWarnings | 关闭编译器警告信息 | 取值为String[],警告信息是多种的,可以具体指明哪些类型的警告信息被抑制 |
@SuppressWarnings 取值范围如下
all,抑制所有警告
boxing,抑制与封装/拆装作业相关的警告
cast,抑制与强制转型作业相关的警告
dep-ann,抑制与淘汰注释相关的警告
deprecation,抑制与淘汰的相关警告
fallthrough,抑制与switch陈述式中遗漏break相关的警告
finally,抑制与未传回finally区块相关的警告
hiding,抑制与隐藏变数的区域变数相关的警告
incomplete-switch,抑制与switch陈述式(enum case)中遗漏项目相关的警告
javadoc,抑制与javadoc相关的警告
nls,抑制与非nls字串文字相关的警告
null,抑制与空值分析相关的警告
rawtypes,抑制与使用raw类型相关的警告
resource,抑制与使用Closeable类型的资源相关的警告
restriction,抑制与使用不建议或禁止参照相关的警告
serial,抑制与可序列化的类别遗漏serialVersionUID栏位相关的警告
static-access,抑制与静态存取不正确相关的警告
static-method,抑制与可能宣告为static的方法相关的警告
super,抑制与置换方法相关但不含super呼叫的警告
synthetic-access,抑制与内部类别的存取未最佳化相关的警告
sync-override,抑制因为置换同步方法而遗漏同步化的警告
unchecked,抑制与未检查的作业相关的警告
unqualified-field-access,抑制与栏位存取不合格相关的警告
unused,抑制与未用的程式码及停用的程式码相关的警告
元注解
标注注解的注解,约束定义的注解用在字段、方法还是类上;保留在编译期、运行期还是源文件上等
在JDK 1.5中提供了4个标准的元注解:@Target
,@Retention
,@Documented
,@Inherited
, 在JDK 1.8中提供了两个元注解 @Repeatable
和@Native
@Target
作用是标明该注解可以用在什么地方
public enum ElementType {
TYPE, // 类、接口、枚举类
FIELD, // 成员变量(包括:枚举常量)
METHOD, // 成员方法
PARAMETER, // 方法参数
CONSTRUCTOR, // 构造方法
LOCAL_VARIABLE, // 局部变量
ANNOTATION_TYPE, // 注解类
PACKAGE, // 可用于修饰:包
TYPE_PARAMETER, // 类型参数,JDK 1.8 新增
TYPE_USE // 使用类型的任何地方,JDK 1.8 新增
}
@Retention
作用是指定注解的生命周期
lombok 的注解生命周期就是 RetentionPolicy.SOURCE
如果 反射 时需要获取到注解信息需要是 RetentionPolicy.RUNTIME,这是自定义注解的绝大部分场景
public enum RetentionPolicy {
SOURCE, // 源文件保留(java 文件)
CLASS, // 编译期保留,默认值(class 文件)
RUNTIME // 运行期保留(运行时也存在)
}
@Inherited
子类是否继承父类的注解,比如父类使用了 @Inherited
修饰的注解,子类会自动继承注解
最新文章
- Android ButterKnife配置使用
- yii2.0场景的使用
- groups, usermod, chown, chgrp, chmod
- Java中的内存分配机制
- flex布局中flex-basis|flex-grow|flex-shrink
- grunt下cssmin的配置参数
- Android推送等耗电原因剖析
- Windows Azure 上 Linux VM 中的交换空间 – 第 2 部分
- 【Cocos2d-X游戏实战开发】捕鱼达人之单例对象的设计(二)
- centOS静态ip设置
- Huffman 哈夫曼编码与译码的原理剖析及C++实现
- jQuery 遍历 – 祖先
- Vue:如何在地图上添加自定义覆盖物(点)
- UOJ#276. 【清华集训2016】汽水 二分答案 点分治
- c#代码分析
- linux 之awk
- angularjs中ng-repeat插入图片
- Genymotion 模拟器上网出现 net::ERR_NAME_NOT_RESOLVED
- retrying模块的学习
- spring cloud学习(四) Fegin 的使用