4.JDK的元Annotation
1.使用@Retention
这个注解是用来修饰注解定义的,作用是被修饰的注解可以保存多久,这个注解需要使用参数。
这个参数的类型是RetentionPolicy,所以使用这个注解就要对value赋值。
value的值有且仅有三个:
->RetenionPolicy.CLASS 编译器把该注解记录在class文件中。当运行java程序时,JVM不可获取注解信息。这是默认值!
->RetenionPolicy.RUNTIME编译器把该注解记录在class文件中。当运行java程序时,JVM可获取注解信息,程序可以通过反射获取该注解信息
->RetenionPolicy.SOURCE 该注解只保存在源代码中,编译器直接丢弃该注解
例如:@Retention(value =RetenionPolicy.SOURCE) 可简写为@Retention(RetenionPolicy.SOURCE)
2.使用@Target
@Target也只能修饰一个注解定义,作用是指定被修饰的注解能用于修饰哪些程序单元,@Target也包含了一个value值,他的值只能是下面的:ElementType.
| 取值 | 注解使用范围 |
| METHOD | 可用于方法上 |
| TYPE | 可用于类或者接口上 |
| ANNOTATION_TYPE | 可用于注解类型上(被@interface修饰的类型) |
| CONSTRUCTOR | 可用于构造方法上 |
| FIELD | 可用于域上 |
| LOCAL_VARIABLE | 可用于局部变量上 |
| PACKAGE | 用于记录java文件的package信息 |
| PARAMETER | 可用于参数上 |
例如:
@Target(ElementType.METHOD) (这是简写)
public @interface Action()
上面就是他的用法,不过有个比较容易混淆的地方就是@interface和interface不是同一个东西:
@interface 不是interface,是注解类 是jdk1.5之后加入的,java没有给它新的关键字
,所以就用@interface 这么个东西表示了 这个注解类,就是定义一个可用的注解
,包括这个注解用于什么地方,是类,还是方法,还是property,还是方法入参等等
,还有这个注解是否编译后进入class 比如我们知道的用于javadoc的注解,是不进入class文件的。
然后在后面你就可以用这个注解写代码了。总的来说,这就是一个生成javadoc时用到的注释类
本文详细介绍了JDK中的元注解,包括@Retention和@Target的使用方法及参数含义。解析了不同RetentionPolicy选项的作用,以及@Target如何指定注解的应用范围。
https://www.bilibili.com/video/BV1qL411u7eE?spm_id_from=333.999.0.0
641

被折叠的 条评论
为什么被折叠?



