使用Google思考的Java扫描类注释

时间:2013-07-22 04:38:34

标签: java annotations google-reflections

我正在尝试使用google反射扫描类中的Fields以获取我的自定义Annotation。我不知道为什么,但结果总是空集。

测试类

public class AnnotationParser {

    public void parse() {
        String packagename = "com.security.rest.client";

        final Reflections reflections = new Reflections(packagename);

        Set<Field> subTypes = reflections.getFieldsAnnotatedWith(Wire.class);

        for (Field field : subTypes) {
            System.out.println("Class : " + field.getName());
        }

    }

    public static void main(String[] args) {
        new AnnotationParser().parse();
    }

}

带注释的类

public class AuthenticationClient {

    @Wire
    public KerberosAPI kerberosAPI;
    @Wire
    public KerberosSessionManager kerberosSessionManager;
}

自定义注释

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Wire {

}

如果需要任何其他信息,请告诉我。

1 个答案:

答案 0 :(得分:5)

默认情况下不扫描字段注释。 您应该将FieldAnnotationScanner添加到扫描仪列表中,例如:

new Reflections("com.security.rest.client", new FieldAnnotationsScanner())