从Object-Type到它在Eclipse JDT中构造MethodDeclarion?

时间:2015-02-18 08:05:17

标签: java eclipse eclipse-jdt

我试图使用Eclipse JDT从方法的参数转到它 构造方法(如果是对象)。

我需要MethodDeclaration ASTNode(因为我可能需要深入研究) 如果再次存在对象参数,则递归更深 在声明中)。

它与Eclipse中强调类型的操作完全相同 按F3。所以我想它可以做到这一点。

在我尝试按名称和参数查找方法之前 通过循环遍历包的所有已解析的CompilationUnits。 但这似乎相当广泛? (并且解析+ getDeclaringMethod只给了我IMethodBinding,这是不同的,并且不是非常有效地进入MethodDeclaration?)

是否有更直接的方式从Type-Node获取到MethodDeclaration-Node 它的构造函数事件,如果它不在同一个CompilationUnit中?

1 个答案:

答案 0 :(得分:0)

您需要从绑定中检索ICompilationUnit,解析它然后找到相应的MethodDeclaration。代码看起来像这样:

IType declaringType = (IType)methodBinding.getDeclaringClass().getJavaElement();
IMethod methodDeclaration = (IMethod)methodBinding.getMethodDeclaration().getJavaElement();

ICompilationUnit declaringUnit = declaringType.getCompilationUnit();
CompilationUnit unit = parseAST(declaringUnit);
unit.accept(new ASTVisitor() {
    @Override
    public boolean visit(MethodDeclaration node) {
        IMethod method = (IMethod)node.resolveBinding().getJavaElement();
        if (method.equals(methodDeclaration)) {
            ...
        }
        return false;
    }
});