Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java注释如何获取特定注释的当前ElementType_Java_Annotations - Fatal编程技术网

Java注释如何获取特定注释的当前ElementType

Java注释如何获取特定注释的当前ElementType,java,annotations,Java,Annotations,我的注解: @Target({ElementType.TYPE,ElementType.FIELD}) @保留(RetentionPolicy.RUNTIME) public@interface ObjectName{ 字符串名()默认为“”; 字符串字段()默认为“”; } 带注释的某个类 @ObjectName(“a”) 公共A类{ @ObjectName(“字段名称”) 字符串字段; } 问题-当我从上面的类中获取所有“ObjectName”注释时,如何获取注释的ElementType

我的注解:

@Target({ElementType.TYPE,ElementType.FIELD})
@保留(RetentionPolicy.RUNTIME)
public@interface ObjectName{
字符串名()默认为“”;
字符串字段()默认为“”;
}
带注释的某个类

@ObjectName(“a”)
公共A类{
@ObjectName(“字段名称”)
字符串字段;
}
问题-当我从上面的类中获取所有“ObjectName”注释时,如何获取注释的ElementType值(字段、类或方法类型)?
所以我想要这样的东西

公共作废流程(clazz类){
Annotation[]annotations=clazz.getAnnotations();
对于(注释注释注释:注释){
如果(对象名的anno instanceof){
ObjectName annObjName=(ObjectName)anno;
Target Target=anno.getAnnotation(Target.class);
if(target.getType().equals)(ElementType.TYPE)
doThat(annObjName.name());
else if(target.getType().equals(ElementType.FIELD)
doThis(annObjName.field());
}
}
}
  • 我能这样做吗
  • 我怎样才能做到这一点,或者我怎样才能知道这个注释是在field还是class上声明的
  • 你不能


    您所能做的就是查看调用
    getAnnotations()
    ,因为您似乎错误地认为
    clazz.getAnnotations()
    将返回类中所有内容的所有注释。这是错误的。当您调用
    clazz.getAnnotations()时
    ,您只能直接在类上获取批注。若要获取字段批注,必须调用
    clazz.getFields()
    ,然后调用
    getAnnotations()
    字段
    元素上。因此,只要保持这些元素正确,就不会有混淆的风险。

    好的,thx。然后只有一个选项可以获取所有类注释和字段注释,并比较其ObjectName实例是否正确