在JDT ASTVisitor中查找MethodInvocation方法绑定

时间:2015-07-23 11:29:24

标签: eclipse-jdt

我有一个使用java.sql.Statement.execute的java文件,如下所示。

public class Dummy
{
    public void execute(String q) throws SQLException
    {
        ...
        Statement stmt = conn.createStatement();
        ...
        stmt.execute(q);
        ...
    }
}

我的用例是我想确定使用JDT ASTVisitor使用“Statement.execute(String)”的所有类及其方法名称是什么。这可能吗?

我在下面使用eclipse ASTView插件找到了条目。

  

方法绑定:Statement.execute(String)

如何在ASTVisitor中获取此方法绑定值。

我试过了。

@Override
public boolean visit(MethodInvocation node)
{
    IMethodBinding iMethod = (IMethodBinding) node.resolveMethodBinding();
    if(iMethod != null)
    System.out.println("Binding "+iMethod.getName());
    return super.visit(node);
}

但node.resolveMethodBinding()始终返回null。

1 个答案:

答案 0 :(得分:1)

  

...我想确定使用" Statement.execute(String)"

的所有类及其方法名称是什么

这听起来像是org.eclipse.jdt.core.search.SearchEngine的工作,它会比使用访问者遍历所有源文件更快地产生结果。

  

... node.resolveMethodBinding()始终返回null

这取决于您获得AST的方式。例如,参见org.eclipse.jdt.core.dom.ASTParser.setResolveBindings(boolean)