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