2

我正在将 MethodDeclaration 用于读取源代码的 java 解析器,但我遇到了一些问题。我看不到任何方法可以给我这个所属的类。是否存在为此的方法,或者我是否需要查看 java 解析器以尝试创建一种将每个 MethodDeclaration 附加到它的 ClassOrInterfaceDeclaration 的方法。

我需要一种方法来检测 MethodDeclaration 是否属于某个类,或者我需要一种方法来获取 ClassOrInterfaceDeclaration 中的所有方法。

编辑以使这一点更清楚:

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

我需要一种方法来找到“m”所属的类。在以下示例中,它将返回“ClassName”

IE

    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 回答