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 ?
答案 0 :(得分:1)
如果您使用符号分辨率功能,则可以。配置完符号解析后,您只需拨打resolveInvokedMethod
即可获得ResolvedMethodDeclaration
的实例。在该对象上,您可以调用getQualifiedSignature()
或根据需要检查参数。
要了解如何配置符号解析,请参阅文档。
注意:我是JavaParser的贡献者