@Target
时间: 2023-07-03 13:21:28 浏览: 23
@Target 是一个 Java 注解,用于标注注解可以应用的目标元素类型。它有一个参数,可以指定一个 ElementType 类型的数组,表示注解可以应用的目标元素类型。
常用的 ElementType 类型包括:
- ElementType.TYPE: 注解可以应用于类、接口、枚举类型。
- ElementType.METHOD: 注解可以应用于方法。
- ElementType.FIELD: 注解可以应用于字段。
- ElementType.PARAMETER: 注解可以应用于方法的参数。
- ElementType.CONSTRUCTOR: 注解可以应用于构造方法。
- ElementType.LOCAL_VARIABLE: 注解可以应用于局部变量。
- ElementType.ANNOTATION_TYPE: 注解可以应用于注解类型。
- ElementType.PACKAGE: 注解可以应用于包声明。
举个例子,如果我们想要定义一个注解,只能应用于方法上,可以这样使用 @Target 注解:
```
@Target(ElementType.METHOD)
public @interface MyAnnotation {
//...
}
```
这样,使用该注解时,如果将其应用于类、字段等其他类型的元素上,编译器会报错。
相关问题
@target详解
`@target` 是 Spring AOP 中用于匹配类上的注解的切入点表达式指示器,它可以匹配所有直接使用指定注解标注的类及其子类中的方法。具体用法如下:
```java
@Around("@target(com.example.MyAnnotation)")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
// ...
}
```
上述示例中,`@target(com.example.MyAnnotation)` 表示匹配所有直接使用 `com.example.MyAnnotation` 注解标注的类,`@Around` 则表示将切面织入到匹配的类中的所有方法中。
需要注意的是,`@target` 只能匹配直接使用指定注解标注的类,如果需要匹配间接被注解标注的类,可以使用 `@within`。此外,切入点表达式中的注解类必须是运行时存在的,否则会抛出 `ClassNotFoundException` 异常。
@Target(ElementType.TYPE)
@Target(ElementType.TYPE)是一个Java注解用来指定注解的应用目标,表示该注解可以应用在类、接口或枚举类型上。在提到@Target(ElementType.TYPE)时,通常是指该注解适用于类型上的注解。
举个例子,假设我们有一个自定义的注解@MyAnnotation,使用@Target(ElementType.TYPE)修饰该注解,那么这个注解就只能应用在类、接口或枚举类型上,而不能应用在方法、字段或参数上。
下面是一个示例代码,展示了如何使用@Target(ElementType.TYPE)来限制注解的应用目标:
```java
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
public @interface MyAnnotation {
// 注解的成员变量和方法
// ...
}
@MyAnnotation
public class MyClass {
// ...
}
```
在上面的代码中,@MyAnnotation注解被@Target(ElementType.TYPE)修饰,因此它只能应用在类、接口或枚举类型上。在MyClass类上使用了@MyAnnotation注解,这是合法的。
总结起来,@Target(ElementType.TYPE)表示一个注解可以应用在类、接口或枚举类型上,而不是方法、字段或参数。
参考文献:
Java Platform SE 15 API Specification - java.lang.annotation.Target. Retrieved from https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/annotation/Target.html
相关推荐














