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의 버그 또는 결함입니다. 내가 놓친 게 있니?