我需要以编程方式重命名给定范围内的标识符,例如,java程序中的方法。例如,给定以下java函数:
public void doSomething(){
int x = 10;
int y = x * 2;
int z = x + y;
}
重命名变量后(x到a,y到b,z到c)我应该得到以下函数:
public void doSomething(){
int a = 10;
int b = a * 2;
int c = a + b;
}
如何以编程方式实现标识符及其引用的重命名?
我一直在研究Eclipse AST和Java Model。在任何一种情况下,我都必须实现搜索所有出现的任何给定标识符,然后替换它们。我想知道是否有更好的方法来做到这一点(Eclipse Refactoring UI如何支持这种变量重命名)?或者,我应该查看语言工具包(org.eclipse.ltk.core.refactoring)?任何教程,示例代码或建议?
请帮忙。
答案 0 :(得分:1)
我不清楚您是希望全面执行此重命名(即所有类中的所有方法)还是仅针对您手动识别的特定类。假设后者,我建议你:
这应该可以解决问题。
答案 1 :(得分:0)
我可以使用以下代码重命名。
RenameSupport renameSupport = RenameSupport.create(field, newName, RenameSupport.UPDATE_REFERENCES);
renameSupport.perform(workbench.getShell(), workbench);
但它将更改应用于实际的源文件。无论如何可以预防吗?我只需要在内部重命名代码,不得更改实际源代码。
答案 2 :(得分:-1)
我真的质疑这样做的智慧,但可以使用注释处理器来完成。您必须接受注释处理器无法修改现有源代码,但可以创建新的源代码,基本上是原始代码的克隆(重命名除外)。
我能想到的唯一一个用例就是你准备了具有在人类语言A(例如日语)中有意义的变量名的源代码,并且你希望与观众讨论它(老板,学生,客户)谁等人类语言B(如阿拉伯语)更为舒适
除此之外,我想不出任何有理由去做这么多麻烦。在给出的示例中,x,y和z是局部变量。由于范围很小,所以没有迫切需要重命名。
答案 3 :(得分:-3)
Eclipse将在其使用的所有位置重命名此变量