注解的作用
对Java中类、方法、成员变量做标记,然后进行特殊处理。它主要的作用有以下四方面:
生成文档,通过代码里标识的元数据生成javadoc文档。
编译检查,通过代码里标识的元数据让编译器在编译期间进行检查验证。
编译时动态处理,编译时通过代码里标识的元数据动态处理,例如动态生成代码。
运行时动态处理,运行时通过代码里标识的元数据动态处理,例如使用反射注入实例。
例如:JUnit框架中,标记了注解@Test的方法就可以被当成测试方法执行,而没有标记的就不能当成测试方法执行
注解的常见分类
1.自定义注解
特殊属性value
1.自定义注解只有一个属性时,且属性名为value时,赋值时value可省略。
定义注解
public @interface People {
public String value();
}
注解使用
@People("student")
public class Student {
}
或
@People(value="student")
public class Student {
}
2.自定义注解只有一个属性时,且属性名不为value时,赋值时应与属性名保持一致。
3.自定义注解有多个属性时,赋值时应与属性名保持一致。
2.JAVA自带的标准注解
Java自带的标准注解,包括@Override、@Deprecated和@SuppressWarnings,分别用于标明重写某个方法、标明某个类或方法过时、标明要忽略的警告,用这些注解标明后编译器就会进行检查。
例如
3.元注解
元注解是用于定义注解的注解,包括@Target、@Retention、@Inherited、@Documented
- @Target用于标明注解使用的范围
- @Retention用于标明注解被保留的阶段
- @Inherited用于标明注解可继承
- @Documented用于标明是否生成javadoc文档
@Target
@Retention
注解的解析
注解的操作中经常需要进行解析,注解的解析就是判断是否存在注解,存在注解就解析出内容。
解析注解的技巧
- 注解在哪个成分上,我们就先拿哪个成分对象。
- 注解作用成员方法,则要获得该成员方法对应的Method对象,再来拿上面的注解
- 注解作用在类上,则要该类的Class对象,再来拿上面的注解
- 注解作用在成员变量上,则要获得该成员变量对应的Field对象,再来拿上面的注解