1

我正在使用 JavaParser。

例如,我有以下方法

void checkCall()
{
    Blabla.test();
}

Blabla.test();是静态调用。我想更改Blabla.test()ABCD.test()不更改任何其他内容。我从methodCall.getScope().get(). 但是怎么用methodCall.setScope()?它期望表达式作为参数。

4

1 回答 1

1

要了解发生了什么,您必须考虑JavaParser是一个解析器。所以这意味着它构建了一个抽象语法树,它不解析符号(这是由 JavaSymbolSolver 完成的)。因此,从 JavaParser 的角度来看,这里的范围不是一个类。相反,它是一个name,稍后有人会解析并找出它是一个类。

所有这一切都说明您应该使用NameExpr作为您的范围以传递给setScope

来源:我是JavaParser的贡献者

于 2017-12-16T09:12:52.860 回答