获取自定义注解的目标元素类型
get target element type of custom annotation
我有一个自定义注释:
@Target({ElementType.METHOD}) // NOTE: ElementType is METHOD
public @interface MyAnnotation {
}
我有一个通用的 class,它采用通用的有界类型:
class MyWork<T extends Annotation> {
T theAnnotation;
public ElementType checkAnnotationElementType() {
// how to get the target elementType of theAnnoation?
}
}
我想实现的是获取T theAnnotation
的目标元素类型。例如我想要达到的最终结果是:
MyWork<MyAnnotation> foo = new MyWork();
ElementType type = foo.checkAnnotationElementType(); // returns ElementType.METHOD
如何从通用类型变量中获取元素类型 theAnnotation
?
你可以做类似的事情。从注释中获取注释。请注意注释可以有不止一种目标类型。
注意 - 您必须以某种方式实例化您的字段 - 构造函数似乎是个好方法,可以省略泛型。
ElementType[] target = new MyWork<>(MyAnnotation.class).checkAnnotationElementType();
class MyWork<T extends Annotation> {
private final Class<T> annotationClass;
public MyWork(Class<T> annotationClass) {
this.annotationClass = annotationClass;
}
public ElementType[] checkAnnotationElementType() {
return annotationClass.getAnnotation(Target.class).value();
}
}
我有一个自定义注释:
@Target({ElementType.METHOD}) // NOTE: ElementType is METHOD
public @interface MyAnnotation {
}
我有一个通用的 class,它采用通用的有界类型:
class MyWork<T extends Annotation> {
T theAnnotation;
public ElementType checkAnnotationElementType() {
// how to get the target elementType of theAnnoation?
}
}
我想实现的是获取T theAnnotation
的目标元素类型。例如我想要达到的最终结果是:
MyWork<MyAnnotation> foo = new MyWork();
ElementType type = foo.checkAnnotationElementType(); // returns ElementType.METHOD
如何从通用类型变量中获取元素类型 theAnnotation
?
你可以做类似的事情。从注释中获取注释。请注意注释可以有不止一种目标类型。
注意 - 您必须以某种方式实例化您的字段 - 构造函数似乎是个好方法,可以省略泛型。
ElementType[] target = new MyWork<>(MyAnnotation.class).checkAnnotationElementType();
class MyWork<T extends Annotation> {
private final Class<T> annotationClass;
public MyWork(Class<T> annotationClass) {
this.annotationClass = annotationClass;
}
public ElementType[] checkAnnotationElementType() {
return annotationClass.getAnnotation(Target.class).value();
}
}