Java中的注解(Annotation)

注解(Annotation) 又称Java标注,是 JDK1.5 引入的一种注释机制

Annotation 的作用:

1. 编译检查,Annotation不是程序本身,但可以对程序作出解释,可以被其他程序(如:编译器等)读取。

2. 在反射中使用,我们可以通过反射机制编程实现数据访问。

3. 根据 Annotation 生成帮助文档,通过给Annotation 加上 @Documented标签,使 该Annotation标签出现在javadoc中。


Annotation 的格式: 注解是以 “@注释名”在代码中存在的,还可以添加一些参数值。
例如:@SuppressWarnings(value="unchecked")

Annotation 在哪里使用?

可以附加在package、class、method、field等上面,相当于给他们添加了额外的辅助信息,可以通过反射对这些元数据访问。



JDK中的三个基本注解:

  1. @Override
    定义在java.lang.Override中,用于限定某个方法,是重写父类或实现接口的方法,该注解只能修饰方法。

  1. @Deprecated
    定义在java.lang.Deprecated中,此注解可以修饰方法、属性、类,用于表示某个程序元素(类、方法、属性等) 已经过时。

  1. @SuppressWarnings
    定义在java.lang.SuppressWarnings中,用于抑制编译时的警告信息,与前面两个注解不同,你需要添加一个参数才能正确使用,这些参数在JDK中已经定义好了的选择性使用(可多选)。
    @SuppressWarnings(value="all") 屏蔽所有警告 【参数里的value字样可以省略,如: @SuppressWarnings("all")】
    @SuppressWarnings("unchecked") 屏蔽未检查警告
    @SuppressWarnings({"unchecked","deprecation"}) 屏蔽未检查警告 和 过时警告



示例图:@Override
Java 学习:Java注解_ide



示例图:@Deprecated
Java 学习:Java注解_Java_02



示例图:@SuppressWarnings
不使用@SuppressWarnings注解的情况
Java 学习:Java注解_注解_03

使用@SuppressWarnings注解 到某个方法上的情况
Java 学习:Java注解_元注解_04

使用@SuppressWarnings注解 到类上的情况
Java 学习:Java注解_元注解_05






元注解 meta-annotatino

IDEA中 选中某个注解 按 ctrl + B 进入原码,可以查看该注解的作用域,下图是 @Override 注解源码:
Java 学习:Java注解_ide_06

注:图中源码第49、50行的 @Target 、 @Retention 是注解的注解,也叫元注解。

了解元注解

图中源码第51行开始,是定义注解的方式。

加油! 未来可期!