Java MethodDeclaration ClassOrInterfaceDeclaration查找类名



我正在使用MethodDeclaration作为一个java解析器,它可以读取源代码,但我遇到了一些问题。我看不到任何方法能给我它所属的类。是否存在用于此的方法,或者我是否需要在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;

我能找到一个方法名称列表吗?

您似乎在使用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做其他事情。

最新更新