关于注解的理解
---恢复内容开始---
1.JDK自带的注解
2.框架的注解
3自定义主机
1.JDK自带的注解有很多 如@ override 继承时重写方法
2.用到比较多的是Spring框架的注解
前两块后续补充
3、自定义注解
用 @interface 修饰的称之为注解(annotation)
修饰注解的注解称之为元注解 如
@Target 用于标记注释的位置
@Target({ElementType.FIELD,ElementType.TYPE})
Target这个元注解是标识MyAnnotation可以加在那些元素上
ElementType.Type:接口和类
ElementType.FIELD 属性
ElementType.METHOD 方法
ElementType.PARAMETER属性
ElementType.CONSTRUCTOR 构造函数
ElementType.LOCAL_VARIABLE 局部变量
ElementType.ANNOTATION_TYPE 注解
ElementType.PACKAGE包
@Retention 用于设置此注解的生命周期
@Retention 是决定注解的存活周期的
RetentionPolicy.RUNTIME 是从源文件 到编译文件 到字节码文件一直存活对的 javac不会去掉改注解 类加载器也不会去掉该注解
RetentionPolicy.CLASS 存在于源文件和编译后的文件 在类加载器加载的时候会去掉注解
RetentionPolicy.SOURCE 只存在于源文件 该注解是给编译器看的 编译器处理完过后 就会将注解去掉 如Override
注解中可设置属性
基本数据类型 数组 枚举类型 属性可以设置缺省值 value属性 可以省略value和等号
/**
*定义基本属性 可以定义缺省值 若没有缺省值 在定义注解的时候 就要赋值
*value属性 可以再增加注解时省略value字段 的赋值
*/
String value()default "123";
String color()default "bule";
/**数组类型的属性*/
int[] arrayAttr() default {1,2,3};
/**枚举类型的属性*/
EumTrafficLamp lamp() default EumTrafficLamp.RED;
---恢复内容结束---