本篇内容介绍了“@Target注解,@Retention元注解和@Documented注解的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
@Target --用于定义在注解的上边,表明该注解可以使用的范围。
(1)进入源码后是这样的:
public @interface Target { ElementType[] value(); }
可以看出取值是一个数组,表明value可以取一个值,也可以取多个值。当取多值时,需用英文逗号隔开。
(2)进入到ElementType,是一个枚举类型:
public enum ElementType { TYPE, //表明此注解可以用在类或接口上 FIELD, //表明此注解可以用在域上(还没用过,) METHOD, //表明此注解可以用在方法上 PARAMETER, //表明此注解可以用在参数上 CONSTRUCTOR, //表明此注解可以用在构造方法上 LOCAL_VARIABLE, //表明此注解可以用在局部变量上 ANNOTATION_TYPE, //表明此注解可以用在注解类型上 PACKAGE, //用于记录java文件的package文件信息, 不使用在一般的类中,而用在固定文件package-info.java中。 注意命名一定是“package-info”。 由于package- info.java并不是一个合法的类, 使用eclipse创建类的方式会提示不合法,所以需要以创建 文件的方式来创建package-info.java。 TYPE_PARAMETER, //类型参数声明 TYPE_USE //类型使用声明 (未使用过,也不知道怎么用) }
以下是关于Eclipse中无法创建package-info包的证明:
package-info.PNG
若@Target注解未指定value值,则表明被@Target修饰的注解可以用于任何范围。
注解@Retention可以用来修饰注解,是注解的注解,称为元注解。
Retention注解有一个属性value,是RetentionPolicy类型的,Enum RetentionPolicy是一个枚举类型,
这个枚举决定了Retention注解应该如何去保持,也可理解为Rentention 搭配 RententionPolicy使用。RetentionPolicy有3个值:CLASS RUNTIME SOURCE
按生命周期来划分可分为3类:
1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
这3个生命周期分别对应于:Java源文件(.java文件) ---> .class文件 ---> 内存中的字节码。
那怎么来选择合适的注解生命周期呢?
首先要明确生命周期长度 SOURCE < CLASS < RUNTIME ,所以前者能作用的地方后者一定也能作用。
一般如果需要在运行时去动态获取注解信息,那只能用 RUNTIME 注解,比如@Deprecated使用RUNTIME注解
如果要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife),就用 CLASS注解;
如果只是做一些检查性的操作,比如 @Override 和 @SuppressWarnings,使用SOURCE 注解。
注解@Override用在方法上,当我们想重写一个方法时,在方法上加@Override,当我们方法的名字出错时,编译器就会报错
注解@Deprecated,用来表示某个类或属性或方法已经过时,不想别人再用时,在属性和方法上用@Deprecated修饰
注解@SuppressWarnings用来压制程序中出来的警告,比如在没有用泛型或是方法已经过时的时候
@Documented注解
Documented注解表明这个注释是由 javadoc记录的,在默认情况下也有类似的记录工具。 如果一个类型声明被注释了文档化,它的注释成为公共API的一部分。
“@Target注解,@Retention元注解和@Documented注解的使用方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。