我正在将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进行其他操作。

关于java - Java MethodDeclaration ClassOrInterfaceDeclaration查找类名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26610174/

10-10 18:28