2010-11-16 70 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