JDK5.0开始增加了注解,是对MetaData的支持
Annotation 其实就是代码里的特殊标记, 这些标记可以在编译、类加载、运行时被读取, 并执行相应的处理。通过使用 Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。 代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。 x各大框架中主要是通过反射读取注解
注解可用于修饰包,类, 构造器, 方法, 成员变量, 参数, 局部变量的声明, 这些信息被保存在 Annotation的 “name=value” 对中。
文档相关的注解
@author 标明开发该类模块的作者, 多个作者之间使用,分割
@version 标明该类模块的版本
@see 参考转向, 也就是相关主题
@since 从哪个版本开始增加的
@param 对方法中某参数的说明, 如果没有参数就不能写
@return 对方法返回值的说明, 如果方法的返回值类型是void就不能写
@exception 对方法可能抛出的异常进行说明 , 如果方法没有用throws显式抛出的异常就不能写
其中
@param @return 和 @exception 这三个标记都是只用于方法的。
@param的格式要求: @param 形参名 形参类型 形参说明
@return 的格式要求: @return 返回值类型 返回值说明
@exception的格式要求: @exception 异常类型 异常说明
@param和@exception可以并列多个
JDK内置的三个基本注解
@Override: 限定重写父类方法, 该注解只能用于方法,用于校验所写的方法是否重写了父类的方法。
@Deprecated: 用于表示所修饰的元素(类, 方法等)已过时。通常是因为所修饰的结构危险或存在更好的选择
@SuppressWarnings: 抑制编译器警告
代码示例
//AnnotationTest.java
package com.ylaihui.annotations;
class Order{
String name;
public Order() {
}
public Order(String name) {
this.name = name;
}
public void show(){
System.out.println("Order show()...");
}
}
class YlaihuiOrder extends Order{
//@Override
public void shows() {
System.out.println("YlaihuiOrder show()...");
}
}
public class AnnotationTest {
public static void main(String[] args) {
YlaihuiOrder ylaihuiOrder = new YlaihuiOrder();
// 本意是想在 YlaihuiOrder 类中重写 Order 类中的 show方法,但是show写为shows了
// 如果没有使用注解,那么不会报错,也不会有任何提示,容易犯错
// 有了注解以后, 在shows方法前提供 @Override, 那么会强制检查方法是否真正的重写了父类中的方法
ylaihuiOrder.show(); // Order show()...
}
}
// Deprecated 已过时的
Date date = new Date(2020, 10, 11);
System.out.println(date);
@SuppressWarnings("unused")
int num = 10;
@SuppressWarnings({ "unused", "rawtypes" })
ArrayList list = new ArrayList();