@Target
是Java中的元注解之一,用于指定注解可以应用的目标元素类型。元素类型包括类、接口、枚举、方法、字段等。@Target
主要用于限制某个自定义注解可以添加到哪些类型的元素上。
@Target
可以指定一个 ElementType
数组,该数组包含了注解可以应用的目标元素类型。以下是几种常见的 ElementType
:
ElementType.TYPE
:
注解可以应用到类、接口、枚举上。
ElementType.FIELD
:
注解可以应用到字段(成员变量)上。
ElementType.METHOD
:
注解可以应用到方法上。
ElementType.CONSTRUCTOR
:
注解可以应用到构造方法上。
ElementType.PARAMETER
:
注解可以应用到方法的参数上。
ElementType.LOCAL_VARIABLE
:
注解可以应用到局部变量上。
ElementType.ANNOTATION_TYPE
:
注解可以应用到其他注解上。
ElementType.PACKAGE
:
注解可以应用到包上。
以下是一个使用 @Target
注解的示例:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
// annotation details
}
在这个例子中,@MyAnnotation
注解可以应用到类、接口、枚举和方法上,因为 ElementType.TYPE
和 ElementType.METHOD
被包含在 @Target 的元素类型数组中。
使用 @Target
注解能够提高自定义注解的灵活性,使得你可以明确指定你的注解可以标记在哪些类型的元素上。