2010-11-16 36 views
1

在开发Eclispe插件时,我可以使用以下代码以编程方式重命名类字段。在eclipse中重命名重构

RenameSupport renameSupport = RenameSupport.create(field, newName, RenameSupport.UPDATE_REFERENCES); 
renameSupport.perform(workbench.getShell(), workbench); 

但它将更改应用于实际源文件。无论如何,这是可以预防的吗?我只需要内部重命名的代码(用于执行其他计算),不得更改实际的源代码。

请建议。

回答

0

如果RenameSupport允许你这样做,你可以将它复制到一个临时文件中,然后在File.createTempFile()中重命名临时文件中的代码。如果没有,那么您可以将原始文件复制到临时文件,并在其他计算完成后将其复制回来。

+0

感谢您的建议。这是我可以利用的最后一个选项。我想知道是否有任何API支持/解决方法,我可能不知道。 – Fahim 2010-11-16 19:47:47

0

首先,创建一个RefactoringDescriptor的实例。然后,在其上调用createRefactoring以创建Refactoring的实例。您可以通过在Refactoring对象上调用createChange来获取更改对象。 Change对象会告诉你重构是如何改变代码的。最后,您可以调用Change对象上的方法perform将其应用于底层文件。

插件org.eclipse.jdt.ui.tests.refactoring包含Eclipse中Java重构的自动单元测试。有关如何以编程方式调用重构的具体示例,请参阅org.eclipse.jdt.ui.tests.refactoring.RefactoringTest