假设有一个类
public class A {
@Deprecated
public void f() {}
}
我希望通过反射获得方法f()的所有注释。
我尝试了什么:
public static void main(String[] args) {
Class c = A.class;
Method[] methods = c.getDeclaredMethods();
String s = methods[0].getDeclaredAnnotations()[0].toString();
System.out.println(s);
}
问题是它打印了注释的全名 - @ java.lang.Deprecated()
有没有办法只获得注释的简短形式(@Deprecated或只是不推荐使用)?
答案 0 :(得分:1)
只需使用Annotation
获取getClass()
实例的类型即可。这将返回一个代理类,因为它是在运行时生成的。此实例将实现注释类型。所以你可以使用getInterfaces()
获得它。
s.getClass().getInterfaces()[0]
然后,您可以在返回的getSimpleName()
实例上调用Class
。