Annotation的理解:
注解(Annotation)是从JDK5.0开始引入,以"@注解名"在代码中存在。例如:@Override、@Deprecated、@SuppressWarnings(values = “unchecked”)
Annotation可以像修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明。还可以添加一些参数值,这些信息被保存在Annotation的“name=value”对中。
注解可以在类编译、运行时进行加载,体现不同的功能
注解的应用场景:
生成文档相关的注解
在编译时进行格式检查(JDK内置的三个基本注解)
跟踪代码依赖性,实现替代配置文件功能
Java基础涉及到的三个常用注解
@Override:限定重写父类方法,该注解只能用于方法
@Deprecated:用于表示所修饰的元素(类、方法等)已过时。通常是因为所修饰的结构危险或存在更好的选择
@SuppressWarnings:抑制编译器警告
自定义注解
以@SupressWarnings为参照,进行定义即可
public @interface MyAnnotation { String value() default "hello"; }
元注解的理解
元注解:对现有的注解进行解释说明的注解
@Target:用于描述注解的使用范围
可以通过枚举类型ElementType的10个常量对象来指定
TYPE、METHOD、CONSTRUCTOR、PACKAGE...
@RETENION:用于描述注解的生命周期
可以通过枚举类型RetentionPolicy的3个常量对象来指定
SOURRCE(源代码)、CLASS(字节码)、RUNTIME(运行时)
唯有RUNTIME阶段才能被反射读取到
@Documented:表明这个注解应该被javadoc工具记录
@Inherited:允许子类继承父类中的注解
扩展:元数据
框架 = 注解 + 反射 + 设计模式