注解
1173字约4分钟
2025-09-23
@Override
注解
@Override
的作用就是告诉编译器,我下面的方法构成重写,此时编译器就会判断你的方法是否构造重写,如果构成,则通过,如果没有构成则报错- 如果你没有写
@Override
,编译器也会判断你这个类是否构成重写,如果你的方法没有构成重写,编译器则认为该方法是一个独立的方法
class A {
public void fin() {}
}
class B extends A {
/*
* 1. @Override 写在fin方法上,表示fin方法重写了父类的fin方法
* 2. @Override的源码
* @Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
* @interface表示的是该类是一个注解类
* 而@Target则是注解的注解,简称元注解
* ElementType.METHOD表示的是该注解只能放在方法上
* */
@Override
public void fin() {}
}
@Deprecated
注解
@Deprecated
注解某个成员,表示该成员已经过时了虽然表示的是该成员已经过时了,但是还是可以使用的,只是用来提示该成员已经过时了
@Deprecated
可以修饰构造函数、字段、局部变量、方法、包、参数、类型@Deprecated
常用在版本升级中过度使用public class Deprecated_ { public static void main(String[] args) { N n = new N(); n.n(); System.out.println(n.name); } } @Deprecated class N { /* * Deprecated的源码 * @Documented @Retention(RetentionPolicy.RUNTIME) @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) public @interface Deprecated { } * */ // 如果过时的类里面的成员没有注解Deprecated,那么就不会提示过时 String name = "Java"; @Deprecated public void n() { } }
@SuppressWarnings
注解
SuppressWarnings
抑制警告的范围跟你写的位置息息相关,如果你将SuppressWarnings
注解写在一个类上面,SuppressWarnings
注解抑制的就是这个类中的警告,依次类推public class SuppressWarnings_ { @SuppressWarnings({"rawtypes", "unchecked", "unused"}) public static void main(String[] args) { /* * SuppressWarnings源码 * @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) @Retention(RetentionPolicy.SOURCE) public @interface SuppressWarnings { String[] value(); } * 所以@SuppressWarnings注解中可以输入多个值来忽略多个类型的警告 * */ List list = new ArrayList(); list.add(""); list.add(""); list.add(""); @SuppressWarnings({"unused"}) int i; System.out.println(list.get(1)); } }
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 // 抑制未用的程式码及停用的程式码相关的警告,忽略该变量没有被使用的警告
元注解
Retention
:指定注解的保留范围(SOURCE(源:将Java源文件编译成class之后,编译器会丢弃该类型的注解),CLASS(类:Java源文件编译成class之后不会丢弃该类型的注解),RUNTIME(运行时:Java源文件编译成class之后然后在jvm中运行,该注解也不会被丢弃))Target
:指定注解可以在那些地方使用(构造函数、字段、局部变量、方法、包、参数、类型)Documented
:指定该注解是否会在javadoc中体现出来(就是当我们给我们的程序生成一个javadoc文档的时候,该注解会在javadoc文档中显示)Inherited
:规定子类会不会继承父类中的注解,就是当父类中有该类型的注解,有个子类继承了该父类,此时该子类也对应的具有父类的注解