使用注解
402字约1分钟
2024-08-08
注解
注解是放在 Java
源码的类、方法、字段、参数前的一种特殊"注释"
public class Hello {
@Override
public String toString() {
return "Hello";
}
}
注释会被编译器直接忽略,注解则可以被编译器打包进入 class
文件,因此,注解是一种用作标注的"元数据"
注解的作用
从 JVM
的角度看,注解本身对代码逻辑没有任何影响,如何使用注解完全由工具决定
注解的分类
第一类是由编译器使用的注解,例如:
@Override
:让编译器检查该方法是否正确地实现了覆写@SuppressWarnings
:告诉编译器忽略此处代码产生的警告
这类注解不会被编译进入 .class
文件,它们在编译后就被编译器扔掉了
第二类是由工具处理 .class
文件使用的注解
比如有些工具会在加载 class
的时候,对 class
做动态修改,实现一些特殊的功能。这类注解会被编译进入 .class
文件,但加载结束后并不会存在于内存中。这类注解只被一些底层库使用,一般我们不必自己处理
第三类是在程序运行期能够读取的注解
它们在加载后一直存在于 JVM
中,这也是最常用的注解。例如,一个配置了 @PostConstruct
的方法会在调用构造方法后自动被调用(这是Java代码读取该注解实现的功能,JVM
并不会识别该注解)