Skip to content

注解(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抑制与未用的程式码及停用的程式码相关的警告