4

Eclipse の AST パーサーを使用して、スタンドアロンの Java ファイルを解析しています。これは、CompilationUnit (つまり Java ファイル) の詳細を取得するための、以下のオーバーライドされたコードです。

@Override
public boolean visit(CompilationUnit node) {
    System.out.println("Compilation unit: " + node.getPackage().getName());
    System.out.println("Imports: " + node.imports());
    System.out.println("Class Name: " + ??); //How to get this?
    return super.visit(node);
}

上記のコードからわかるように、からパッケージ名、インポートなどを取得できますCompilationUnit。しかし、私が直面している主な問題は、クラスの名前を取得できないことです。node.toString()ソースコード全体を印刷して印刷しようとしましnode.getClass();たが、試してみましたが、名前がCompilationUnit. 私が欲しいのは、解析しているファイルのクラスの名前です。I can get this info を使用したビルド内メソッドはありますか?

4

1 に答える 1

3

Java では、コンパイル単位は 1 つのクラスに相当しません。

たとえば、複数のクラスを (package-private アクセスで) 定義できます。一方、コンパイル単位内に常に public クラスがあるとは限りません (パブリック クラスは 1 つしか持てないという制限があり、もしあれば、その名前はコンパイル単位の名前と同じでなければなりません)。

受け入れプロセスを処理し、クラスCompilationUnitのメソッドも作成する必要があると思います。visit()

于 2013-10-31T09:02:46.827 に答える