2

ソース コードを読み取る Java パーサーに MethodDeclaration を使用していますが、いくつか問題があります。これが属するクラスを提供するメソッドが表示されません。これにはメソッドが存在しますか、それとも Java パーサーを調べて、各 MethodDeclaration をその ClassOrInterfaceDeclaration にアタッチする方法を作成する必要がありますか。

MethodDeclaration がクラスに属しているかどうかを検出する方法、または ClassOrInterfaceDeclaration 内のすべてのメソッドを取得する方法が必要です。

これをより明確にするために編集します。

MethodDeclaration m = oldMethodDeclaration ; //where oldMethodDeclaration is already defined method declaration

「m」が属するクラスを見つける方法が必要です。次の例では、「ClassName」が返されます

すなわち

    public class ClassName{
public void oldMethodDeclaration (){
}

}

あるいは、私が持っている場合

ClassOrInterfaceDeclaration ClassName;

添付されているメソッド名のリストを見つけることはできますか?

4

1 に答える 1

1

JavaParser を使用しているようです。

したがって、MethodDeclaration のエンクロージング クラスを取得するには:

TypeDeclaration t = (TypeDeclaration) m.getParentNode();

ClassOrInterfaceDeclaration のメソッドにアクセスするには:

c.accept(new VoidVisitorAdapter<Void>() {
    @Override
    public void visit(MethodDeclaration n, Void arg) {
        System.out.println("Method name: " + n.getName());
    }
}, null);

メソッド名を印刷しただけです。MethodDeclarations で何か他のことを行うためにビジターを作成するために必要な情報が得られると思います。

于 2015-03-08T11:10:07.790 に答える