我在java中创建了一个类,如下所示:
public class TestAnnotations {
@Retention(value=RetentionPolicy.RUNTIME)
@Target(value=ElementType.FIELD)
protected @interface Addition
{
String location();
}
}
如何使用反射获取有关在类中定义的注释的信息。更具体地说,我正在寻找诸如添加类型,当然名称及其中的字段等信息。
答案 0 :(得分:2)
您可以使用Class#getDeclaredClasses()
返回反映所有类和的Class对象数组 声明为此Class表示的类的成员的接口 对象
然后,您可以遍历数组,检查该类是否为Class#isAnnotation()
的注释。
实施例
public class Driver {
public static void main(String[] args) throws Exception {
Class<?>[] classes = Driver.class.getDeclaredClasses();
System.out.println(Arrays.toString(classes));
for (Class<?> clazz : classes) {
if (clazz.isAnnotation()) {
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method);
}
}
}
}
@Retention(value=RetentionPolicy.RUNTIME)
@Target(value=ElementType.FIELD)
protected @interface Addition
{
String location();
}
}
打印
[interface com.spring.Driver$Addition]
public abstract java.lang.String com.spring.Driver$Addition.location()