概述
Java注解基本知识
- 注解是代码的附属信息,不能干扰代码的正常执行,无论删除或增加注解,代码都能够正常执行
- 定义注解使用@interface修饰符
- Java预定义注解被称为元注解,它们被Java编译器使用,比如:@Retention注解和@Target注解,前者定义注解的保留期限,后者定义注解的应用目标
- 注解的成员声明和接口的方法声明类似,还可以使用default关键字指定成员的默认值
- 如果注解只有一个成员,则成员名必须取名为
value()
,使用时如果给成员赋值可以不写成员名和赋值符号’=’ - 如果注解有多个成员,在赋值时如果只给
value()
成员赋值,也可以不写成员名和赋值符号’=’ - 如果在赋值时要同时给多个成员赋值,则必须写成员名和赋值符号’=’
- 所有注解类都隐式继承与
java.lang.annotation.Annotation
,但是注解不允许显示继承于其他的接口
有个问题,Java中所有类都隐式继承与Object类这个说法正确吗?
如何访问注解
通过Java的反射机制读取注解的信息
若要通过反射来读取注解信息,那么被定义的注解的保留期限必须是RententionPolicy.RUNTIME,
只有该策略下的注解信息会被保留在目标类代码的字节码中,并且当类加载器加载字节码时会将注解信息加载到JVM中
定义注解
1 | // 定义@NeedTest注解的保留期限,该注解会保存到目标类的字节码中,并且会被类加载器加载到JVM中 (RetentionPolicy.RUNTIME) |
使用注解
1 | public class MyService { |
访问注解
1 |
|
参考链接
《精通Spring4.x——企业应用开发实践》 第8章 基于@AspectJ和Schema的AOP 8.2 Java5.0注解知识快速进阶