@Target({}) @Retention(RetentionPolicy.RUNTIME)这两个注解什么意思
时间: 2024-01-09 13:39:43 浏览: 132
这两个注解分别是 `@Target` 和 `@Retention`。
`@Target` 注解用来指定注解可以用在哪些元素上,它的取值包括以下几种:
- `ElementType.TYPE`:可以用在类、接口、枚举类上。
- `ElementType.FIELD`:可以用在字段上。
- `ElementType.METHOD`:可以用在方法上。
- `ElementType.PARAMETER`:可以用在方法参数上。
- `ElementType.CONSTRUCTOR`:可以用在构造函数上。
- `ElementType.LOCAL_VARIABLE`:可以用在局部变量上。
- `ElementType.ANNOTATION_TYPE`:可以用在注解上。
- `ElementType.PACKAGE`:可以用在包上。
- `ElementType.TYPE_PARAMETER`:可以用在泛型参数上。
- `ElementType.TYPE_USE`:可以用在类型使用上。
`@Retention` 注解用来指定注解可以保留多长时间,它的取值包括以下几种:
- `RetentionPolicy.SOURCE`:注解只在源码中保留,编译时会被忽略。
- `RetentionPolicy.CLASS`:注解在编译时被保留在 class 文件中,但在运行时不会被加载。
- `RetentionPolicy.RUNTIME`:注解在运行时被保留,可以通过反射机制获取到。
因此,`@Target({}) @Retention(RetentionPolicy.RUNTIME)` 表示该注解可以用在任意元素上,而且在运行时会被保留。这通常用于自定义注解,让它们在运行时可以被反射机制获取。
阅读全文