我試圖使用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中的一個缺陷或缺陷,因爲似乎沒有任何其他方式來獲取將從給定編譯單元的源代碼生成的所有二進制名稱。我錯過了什麼嗎?