如何在方法中区分MethodCallExpr中的两个方法?

时间:2018-02-15 14:32:47

标签: java javaparser

public class A{
    void methodA(){
        add(1, 2);
        add(1.2, 2.5);
    }

    void add(int a, int b){
        // add two integers
    }

    void add(double a, double b){
        // add two double numbers
    }
}

现在我使用下面的代码在方法

中提取方法调用
   new VoidVisitorAdapter<Object>() {
        @Override
        public void visit(MethodCallExpr n, Object arg) {
            super.visit(n, arg);

            System.out.println(n.getNameAsString());
        }
    }.visit(JavaParser.parse(code), null);

现在,我如何在 methodA 中区分这两种方法 add(1,2) add(1.2,2.5) MethodCallExpr

1 个答案:

答案 0 :(得分:1)

如果您使用符号分辨率功能,则可以。配置完符号解析后,您只需拨打resolveInvokedMethod即可获得ResolvedMethodDeclaration的实例。在该对象上,您可以调用getQualifiedSignature()或根据需要检查参数。

要了解如何配置符号解析,请参阅文档。

注意:我是JavaParser的贡献者