我试图使用Java TreePathScanner API来确定将从给定编译生成的类文件的列表。例如,下面的代码:Java TreePathScanner不会为没有正文的新类声明调用visitClass
public class InnerClass {
private final InnerInnerClass clazz = new InnerInnerClass();
private class InnerInnerClass {
}
}
会生成以下文件:
- InnerClass.class
- $将InnerClass 1.class
- $将InnerClass InnerInnerClass.class
但是,在我的TreePathScanner子类中,visitClass仅被调用两次,用于InnerClass类,而I nnerInnerClass类,但不是从新类声明创建的匿名命名类。更改源到以下按预期工作:
public class InnerClass {
private final InnerInnerClass clazz = new InnerInnerClass() { };
private class InnerInnerClass {
}
}
我的工具的完整的源代码参考可用here,特别是ArtifactScanner.java。
要么这是API中的一个缺陷或缺陷,因为似乎没有任何其他方式来获取将从给定编译单元的源代码生成的所有二进制名称。我错过了什么吗?