javase中常见几个注解
@retention
中文意思是维持,保留的意思,****
指定注解的作用范围
说明:
只能修饰一个annotation,用于指定该annotation可以保留多长时间,@rentention包含一个retentionpolicy类型的成员变量,使用@rentention时,必须为该value成员变量指定值:
@retention的三种值
@Retention(RetentionPolicy.RUNTIME)
@Retention(RetentionPolicy.SOURCE)
@Retention(RetentionPolicy.CLASS)
以上三个就是我们的三种取值
1.SOURCE编译器使用后,会直接丢弃这个策略的注释
2.CLASS编译器会把注释记录存在class文件种种那个,当运行Java程序时,jvm不会保留注释,
3.RUNTIME这个编译器可以把注释记录存在class文件中,当运行Java程序的时候,jvm会保留注释,程序可以通过反射获取该注释。
@target
指定该注解会在哪些地方使用
我们看一下target的源码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QnOHbXF9-1643505693475)(C:\Users\86189\AppData\Roaming\Typora\typora-user-images\image-20220130090031609.png)]
/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** Field declaration (includes enum constants) */
FIELD,
/** Method declaration */
METHOD,
/** Formal parameter declaration */
PARAMETER,
/** Constructor declaration */
CONSTRUCTOR,
/** Local variable declaration */
LOCAL_VARIABLE,
/** Annotation type declaration */
ANNOTATION_TYPE,
/** Package declaration */
PACKAGE,
/**
* Type parameter declaration
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* Use of a type
*
* @since 1.8
*/
TYPE_USE
以上就是target可以取值的范围
我们再来看一下@deprecated 可以在哪些位置书写
我们就直接看他的target是有什么取值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7FLyCg7x-1643505693476)(C:\Users\86189\AppData\Roaming\Typora\typora-user-images\image-20220130090352773.png)]
@documented
用于指定该元注解修饰的类,被javadoc工具提取为文档,即在生成文档的时候,可以看到注释。
注意: 当我们设置documented注解的时候需要设置retention的值为runtime
这样才能保证生成帮助文档时候看到该注解就是不会消失
@inherited
子类会继承父类的注解
假设有一个注解a
被inherited修饰了
然后一个A类 它具有一个注解a,然后b类继承了a类
那么b也拥有了 a注解
注解类
@deprecated
英译为过时的,也即是说 我们的这个类是系统提醒我们 这个类是不推荐使用,但是仍然可以使用,
把这个注解加在我们的类上面,就可以说明这个类是不是过时的。
hvg6-1643505693477)]
@deprecated
英译为过时的,也即是说 我们的这个类是系统提醒我们 这个类是不推荐使用,但是仍然可以使用,
把这个注解加在我们的类上面,就可以说明这个类是不是过时的。