0

我想通过在注释处理器中获取注释来从存在特定注释的类中获取有关字段的信息。

我可以从注释中检索完全限定的类名,但不能实例化它,aClassNotFoundException被抛出,尽管类在那里。

如何检查类是否不在类路径中或注释处理器包含哪个类路径?

try {
                Class<?> clazz = Class.forName(((TypeElement) e).getQualifiedName().toString());
            } catch (ClassNotFoundException cnfe) {
                cnfe.printStackTrace();
            }
4

1 回答 1

1

您在问题代码中尝试执行的操作是不可能的,因为注释处理发生在程序完全编译之前。这就是为什么您使用例如TypeElement对象而不是 的Class原因,因为该类尚未编译。

另一方面,如果您只想检查存在哪些类型的字段,则可以使用ElementAPI,例如:

for (Element e : typeElement.getEnclosedElements()) {
    if (e.getKind() == ElementKind.FIELD) {
        VariableElement field = (VariableElement) e;
        //
    }
}
于 2017-06-18T12:56:34.760 回答