Java元注解

元注解是指注解的注解,包括@Retention @Target @Document @Inherited四种。

@Retention定义注解的保留策略

@Retention(RetentionPolicy.SOURCE):注解仅存在于源码中,在class字节码文件中不包含。

@Retention(RetentionPolicy.CLASS):默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得

@Retention(RetentionPolicy.RUNTIME):注解会在class字节码文件中存在,在运行时可以通过反射获得。

如果需要在运行时云动态获得注解信息,那只能用RUNTIME注解,如果要在编译时进行一些预处理操作,比如生成一些辅助代码,就用CLASS注解,如果只是做一些检查性操作,比如@Override和@Supresswarnings,则可选用SOURCE注解。

@Target定义注解的作用目标

@Target(ElementType.TYPE):接口、类、枚举、注解

@Target(ElementType.FIELD):字段、枚举的常量

@Target(ElementType.METHOD):方法

@Target(ElementType.PARAMETER):方法参数

@Target(ElementType.CONSTRUCTOR):构造函数

@Target(ElementType.LOCAL_VARIABLE):局部变量

扫描二维码关注公众号,回复: 875288 查看本文章

@Target(ElementType.ANNOTATION_TYPE):注解

@Target(ElementType.PACKAGE):包

@Document:说明该注解将被包含在javadoc中

@Inherited:说明子类可以继承父类中的该注解 

注解和接口有点类似,注解类里面所有属性被定义成方法,元素要么有默认值,要么在使用注解的时候提供元素的值,而且元素不能使用null作为默认值。注解类内部可用的类型包括:所有基本类型、String、Class、enum、Annotation、以上类型的数组形式。注解在只有一个元素且该元素的名称是value的情部分下,在使用注解的时候可以省略“value=”,而直接写需要的值即可。

使用注解最主要的部分在于对注解的处理,那么就会涉及到注解处理器,从原理上讲,注解处理器就是通过反射机制获取注解信息,然后根据注解元素进行特定的处理。


猜你喜欢

转载自blog.csdn.net/chs007chs/article/details/80250640