java程序中的标识符重命名
我需要以编程方式重命名给定范围内的标识符,例如,java程序中的方法。例如,给定以下java函数:java程序中的标识符重命名,java,eclipse-plugin,identifier,renaming,Java,Eclipse Plugin,Identifier,Renaming,我需要以编程方式重命名给定范围内的标识符,例如,java程序中的方法。例如,给定以下java函数: public void doSomething(){ int x = 10; int y = x * 2; int z = x + y; } public void doSomething(){ int a = 10; int b = a * 2; int c = a + b; } 重命名变量(x为a,y为b,z为c)后,我应获得以下函数: public v
public void doSomething(){
int x = 10;
int y = x * 2;
int z = x + y;
}
public void doSomething(){
int a = 10;
int b = a * 2;
int c = a + b;
}
重命名变量(x为a,y为b,z为c)后,我应获得以下函数:
public void doSomething(){
int x = 10;
int y = x * 2;
int z = x + y;
}
public void doSomething(){
int a = 10;
int b = a * 2;
int c = a + b;
}
如何以编程方式实现标识符及其引用的重命名
我一直在研究EclipseAST和Java模型。无论哪种情况,我都必须实现对任何给定标识符的所有匹配项的搜索,然后替换它们。我想知道是否有更好的方法来实现这一点(Eclipse重构UI如何支持这种变量重命名)?或者,我应该看看语言工具包(org.eclipse.ltk.core.refactoring)吗?有教程、示例代码或建议吗
请帮忙。- 选择变量
- 单击鼠标右键
- 选择重构
- 选择“重命名”
- 重命名变量
Eclipse将在它使用的所有地方重命名这个变量我真的怀疑这样做是否明智,但是可以使用注释处理器来完成。您必须接受注释处理器不能修改现有源代码,但可以创建基本上是原始源代码克隆的新源代码(重命名除外)
除此之外,我想不出任何好的理由去惹这么多麻烦。在给出的示例中,x、y和z是局部变量。由于作用域很小,因此确实不需要重命名。我不清楚您是希望全面(即所有类中的所有方法)执行此重命名,还是仅对手动识别的特定类执行此重命名。假设是后者,我建议您:
这应该可以解决问题。我可以使用以下代码重命名
RenameSupport renameSupport = RenameSupport.create(field, newName, RenameSupport.UPDATE_REFERENCES);
renameSupport.perform(workbench.getShell(), workbench);
但它将更改应用于实际的源文件。有什么可以预防的吗?我只需要内部重命名的代码,不能更改实际的源代码 非常感谢您的回复。如果我理解了你的建议,你建议对源代码进行注释。不幸的是,我不能使用编辑器UI编辑源代码,因此我的用例不允许注释源代码。我正在尝试使用“org.eclipse.jdt.internal.corext.refactoring.rename.RenameLocalVariableProcessor”。但是,为了实例化这个类,我需要传递一个实现“org.eclipse.jdt.core.ILocalVariable”接口的对象。文档中说,“ILocalVariable是作为ICodeAssist.codeSelect(…)操作的结果创建的伪元素。它们不是Java模型的一部分,也不包含在IMethod或IInitializer的子级中。”那么我如何获得ILocalVariable的实例呢?哦,这太简单了。调用ICompilationUnit.codeSelect(…)将完成此任务。