注解(Annotation)
基本介绍
引入修饰符:@
(1)注解(Annotation)也被称为元数据(Metadata),用于修饰包、类、方法、属性、构造器、局部变量等,用于解释他们的数据信息
(2) 和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息
(3)元注解:注解的注解
注解分类
基本注解
(1)@Override:限定某个方法,是重写父类方法,该注解只能用于方法
(2)@Deprecated:用于表示某个程序元素(类、方法等)已过时
(3)@SuppressWarnings:抑制编译器警告
元注解
(1)Retention:指定注解的作用范围
RetentionPolicy.SOURCE:编译器使用后,直接丢弃这种策略的注释
RetentionPolicy.CLASS:编译器将把注解记录在 class 文件中. 当运行 Java 程序时,JVM 不会保留注解。这是默认值
RetentionPolicy.RUNTIME::编译器将把注解记录在 class 文件中. 当运行 Java 程序时,JVM 会保留注解. 程序可以通过反射获取该注解
(2)Target:指定注解可以在哪些地方使用
(3)Documented:指定该注解是否会在 javadoc 体现
(4)Inherited:子类会继承父类注解
@Override
基本介绍
(1)@Override 表示指定重写父类的方法(从编译层面验证),如果父类没有该方法,则会报编译错误
(2)如果不写@Override 注解,而父类有和子类相同的方法,仍然构成重写
(3)@Override 只能修饰方法,不能修饰其他类、包、属性等等
应用场景
检验某个方法是否重写了父类的方法:在方法上方添加@Override 注解,不报错,则重写
底层源码
java
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}@Deprecated
基本介绍
(1)用于表示某个程序元素(类、方法等)已过时
(2)可以修饰方法、类、字段、包、参数等等
(3)@Deprecated 注解的作用:可以做到新旧版本的兼容和过渡
底层源码
java
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}@SuppressWarnings
基本介绍
注解的作用:忽略一些警告
使用方法:@SuppressWarnings("传入一个类型")
底层源码
java
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}常用抑制类型
| 属性 | 说明 |
|---|---|
| unchecked | 抑制与未检查的作业相关的警告 |
| rawtypes | 抑制与使用 raw 类型相关的警告 |
| unused | 抑制与未用的代码相关的警告 |
| deprecation | 抑制与使用过时 API 相关的警告 |
| fallthrough | 抑制 switch 语句中遗漏 break 的警告 |
| serial | 抑制 Serializable 类缺少 serialVersionUID 警告 |
| all | 抑制所有警告 |
抑制类型一览表
| 属性 | 说明 |
|---|---|
| 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 | 抑制与未用的程式码及停用的程式码相关的警告 |
