Java 直接获取字段的注释
在一个类中,我有几个字段是匿名类。其中一些有注释。例如:Java 直接获取字段的注释,java,reflection,annotations,Java,Reflection,Annotations,在一个类中,我有几个字段是匿名类。其中一些有注释。例如: public class MainClass { @Annotation public static Test t = new Test() {...} Interface Test {...} } 我知道我可以通过MainClass.class.getField(“t”).getAnnotations()查看t的注释,但是有没有办法通过引用t来获取t的注释?例如,如果我有一组测试,我可以通过迭代来查看它们
public class MainClass {
@Annotation
public static Test t = new Test() {...}
Interface Test {...}
}
我知道我可以通过MainClass.class.getField(“t”).getAnnotations()查看t的注释,但是有没有办法通过引用t来获取t的注释?例如,如果我有一组测试,我可以通过迭代来查看它们的注释吗
Collection<Test> c;
...
// MainClass.t is in collection c
...
for (Test test : c) {
// get annotation of test
}
集合c;
...
//MainClass.t在集合c中
...
用于(测试:c){
//获取测试的注释
}
我猜这是不可能的,如果不可能的话,什么是接近我要做的事情的最佳方式?引用只指向一个对象,而对象没有任何注释。字段(方法、类、参数等)不起作用。所以,不,这是不可能的 接近我要做的事情的最好方式是什么 没有
public void someMethod() {
Test test = MainClass.t;
// some more
}
MainClass.t
是一个字段
。局部变量test就是局部变量
请注意,您可以注释局部变量
public void someMethod() {
@SomeAnnotation
Test test;
}
@Target(value = { ElementType.LOCAL_VARIABLE })
public @interface SomeAnnotation {
}
但无法检索该注释。它主要由IDE使用,例如
@SuppressWarnings
我想Test
是一个接口,您需要实现类的注释
for (Test test : c) {
test.getClass().getField( "xx" ).getAnnotations()
}
当然,您可以使用
test.getClass().getFiels()
获取所有字段,然后从中获取注释。取决于你真正想做什么。匿名类的字段有没有办法看到自己的注释?类似于publicstatictest t=newtest(){…this.getClass().doSomething}?@user1940121如果您的匿名类有一个实例字段,那么您可以像平常一样访问它。在您的示例中,t.getClass().getField(…)
。该字段将只属于匿名类(实例)。