2016-08-23 16 views
0

假設內嵌類我有這些類:與超類使用重構

class GoodClass 
{ 
    //... stuff... 
    public GoodClass(...) {...} 
    //... stuff... 
} 

class BadClass extends GoodClass 
{ 
    public BadClass(...) {super(...);} 
} 

class SomeOtherClass extends BadClass 
{ 
    //... stuff... 
} 

我想刪除BadClass和使用GoodClass無處不在。

有沒有辦法用IntelliJ IDEA輕鬆實現?因此,它應該用GoodClass直接替換BadClass的所有用法:應該更改變量/字段類型,應該替換構造函數調用,繼承類應該更改它們的父代,以及其他所有事情,如果我忘記了某些內容。

我試過使用「內聯類」,但它不符合我的期望。

+0

你有沒有嘗試過簡單的找到所有,替換(按Ctrl + Shift + R)> BadClass與GoodClass?然後刪除改名BadClass,顯然 –

+0

也許不是直接的,因爲你正在做的是不是全吹重構。你能保證'BadClass'和'GoodClass'之間的使用是相互兼容的嗎?也就是說,在'BadClass'中調用的任何方法是否會返回與'GoodClass'相同的東西? – Makoto

+0

@ cricket_007查找/替換作品,但不完美。例如。如果我有一個字段「BadClass badClass」,我希望在重構之後有一個「GoodClass goodClass」(類似於類重命名重構)等等。 – kan

回答

3

Find/Replace將完成70%的工作。您可能需要稍後修復軟件包名稱。

另一個想法

  1. 重命名GoodClass到WantedClass;
  2. 重命名(在IDE上)BadClass爲GoodClass;
  3. 關閉你的IDE;
  4. 轉到src目錄,刪除GoodClass.java(舊的BadClass);
  5. 現在將WantedClass.java重命名爲GoodClass.java
  6. 將其打開並更改類名稱。
+0

另一個想法可能會起作用 – baao

+0

不需要關閉IDE。只是使用簡單的文件刪除,而不是「安全刪除」。 也「結構搜索和替換」的作品,但有時會崩潰的IDE ... – kan

+0

注意。我說要關閉IDE,因爲它在任何IDE上都是安全的。 – danielbathke