如何获取 class 在 Java 注释处理器中应用的注释?
How to get class that annotation applied to in Java Annotation Processor?
我编写了一个自定义 Java 注释处理器,如果将其应用于 class,则会生成一个 class,其名称为带注释的 class 字段。
执行时,我可以用 (DeclaredType)annotatedElement.asType()
找到带注释的 class(如 "com.package.Person")的名称,但无法通过 Class<com.package.Person>
找到其字段。
我试图用 Class.forName(com.package.Person)
的全名加载 class,但抛出异常 ClassNotFoundException: com.package.Person
如何获得Class<Person>
?
可能是名字错了?
这是代码。并且有效。
Class<?> testClass = Class.forName("PackageName.ClassName");
Object instance = testClass.newInstance();
com.package.Person -> package.Person。如果不工作,我很累。对不起。
最后,我发现我无法获取 Class<?>
但我可以通过 var elements = element.getEnclosedElements()
获取字段,它们的种类是 FIELD
也可以通过 ((TypeElement) rootElement).getSuperclass()
获得超类
我编写了一个自定义 Java 注释处理器,如果将其应用于 class,则会生成一个 class,其名称为带注释的 class 字段。
执行时,我可以用 (DeclaredType)annotatedElement.asType()
找到带注释的 class(如 "com.package.Person")的名称,但无法通过 Class<com.package.Person>
找到其字段。
我试图用 Class.forName(com.package.Person)
的全名加载 class,但抛出异常 ClassNotFoundException: com.package.Person
如何获得Class<Person>
?
可能是名字错了?
这是代码。并且有效。
Class<?> testClass = Class.forName("PackageName.ClassName");
Object instance = testClass.newInstance();
com.package.Person -> package.Person。如果不工作,我很累。对不起。
最后,我发现我无法获取 Class<?>
但我可以通过 var elements = element.getEnclosedElements()
获取字段,它们的种类是 FIELD
也可以通过 ((TypeElement) rootElement).getSuperclass()