1. 注解:Anotation
-
JDK5引入的一门技术,位于源码中使用其他工具进行处理的标签。但是它不是程序的本身,但是可以对程序做出解释。(相当于写给机器的注释)
-
注解用来修饰程序的元素(包 / 类 / 方法 / 字段等),但不会对被修饰的对象有直接的影响。
-
可以通过反射对注解信息进行访问和处理。
-
作用:提供信息给编译器/IDE工具;可用于其他工具来产生额外的代码 / 配置文件等;某些注解可以在程序运行时访问可以增强程序的动态性。
这就是我们最常见的注解之一,表示一个方法打算重写父类的一个方法。
2. 常见内置注解
-
Override重写注解:表示方法声明旨在覆盖超类型中的方法声明。 如果使用此注释类型注释方法,则除非至少满足以下条件之一:1. 该方法将覆盖或实现在超类型中声明的方法;2. 该方法具有与Object中声明的任何公共方法的覆盖相同的签名 。;否则需要编译器生成错误消息。
@Target(ElementType.METHOD) //只能用来修饰方法 @Retention(RetentionPolicy.SOURCE) public @interface Override { }
-
Deprecated废弃注解:不推荐程序员使用或者存在更好的替代方式;使用Deprecated修饰的元素编译运行时编译器会报出警告。例如:Thread类下的stop方法、suspend方法、resume方法;Date类下的getYear方法、getMonth方法…Deprecated修饰的元素都会有一个中划线在上面。
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) //可以用来修饰构造器、字段、局部变量... public @interface Deprecated { }
-
SuppressWarnings压制警告注解:用来抑制编译时的警告信息,如果你想用编译运行时存在警告的元素时,但是又不想看到警告信息(和乱码兄弟一样看多了难受,总觉得自己的东西有问题)这时可以使用镇压警告注解。它与上面两个注解不一样,它需要传入一些已经定义好的参数才能正确使用。
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) @Retention(RetentionPolicy.SOURCE) public @interface SuppressWarnings { String[] value(); //参数:压制警告的类型 } 1. @SuppressWarnings("unchecked") //忽略所有的未检查警告信息 2. @SuppressWarnings("deprecated") //忽略所有的过时元素的警告信息 3. @SuppressWarnings(value = {"deprecated","unchecked"}) //压制警告和未检查信息 4. @SuppressWarnings("all") //压制所有的警告信息 注意当压制多个警告时请将他们以第三种value数组的形式写入,否则编译器爆红。
压制警告信息的名称并不是Java规范的强制要求,这些是编译器/IDE厂商自己定的。编译器厂商需要自行协商保证同名的警告类型在不同编译器上也能正常运行。而且不同版本的警告信息同样存在不同。在JDK的bin目录下启动cmd输出:javac -X可以看到当前版本所支持的所有警告信息名称。