最初学习注解的时候,很多地方没弄明白,在对java本身和一些框架有了一些更深的认识之后,回过头再巩固一下。
定义
注解可以在编译、运行期间为编译器、JVM提供一些信息,目的是让程序借助这些信息完成一些特定功能
分类
编译过程使用
编译结束后丢弃
栗子
- @Override
- @SuppressWarnings
- @Deprecated
- @AllArgsConstructor
其它工具使用
保存在class文件中
栗子
- ???
运行期间使用
存在于JVM中
栗子
- @PostMapping
- @GetMapping
- @Component
自定义注解
元注解
@Target
- TYPE
- FIELD
- METHOD
- PARAMETER
@Retention
- SOURCE
- CLASS
- RUNTIME
…
使用
注解仅仅是提供一些信息,如何利用这些信息需要程序员来决定。具体过程大概是先判断注解是否存在,然后读取注解提供的内容信息,再添加相应的逻辑。
判断某个注解是否存在
Class.isAnnotationPresent(Class)
Field.isAnnotationPresent(Class)
Method.isAnnotationPresent(Class)
Constructor.isAnnotationPresent(Class)
使用反射API读取Annotation
Class.getAnnotation(Class)
Field.getAnnotation(Class)
Method.getAnnotation(Class)
Constructor.getAnnotation(Class)
思维导图
