2015-09-26 85 views
1

我有一個基類的面向對象結構,約有10個派生自該基類的類。我希望專門化它,並且需要改變這10類延伸的類。Intellij,來自不同類的重構派生類

所以,我有:

B 
One extends B 
Two extends B 
Three extends B 
... 

我需要這個改變:除了

B 
B2 extends B 
One extends B2 
Two extends B2 
Three extends B2 
... 

通過類手動去,沒有的IntelliJ具有重構功能,這讓我改變一切從B衍生出來的類,從B2派生出來?

回答

1

您可以使用結構搜索&替換。搜索:

class $A$ extends B {} 

替換:

class $A$ extends B2 {} 
+0

我不知道「結構搜索」和「結構搜索和替換」功能。剛剛嘗試過,它比我預想的更聰明。它看起來像$ A $會自動將它作爲連接不同搜索參數的變量提供。我可以想象爲此的各種用途。謝謝你讓我意識到這一點。這是我越來越喜歡Intellij的另一個原因。 – Mike

1

你可以做一個全局搜索和替換,只是將「擴展B」改爲「擴展B2」。

但也有一個更清潔的方法。

  • 重命名B類爲B2級,現在從B2都繼承
  • 然後添加「延伸B」,並創建B類(可作爲權宜之計)
  • 運行重構「拉成員達」從B2內選擇任何想要移動到B的方法。
+0

最後我做這些事情,但一些涉及體力勞動得到的一切權利。我正在尋找一些聰明的東西,我認爲IDE的重構技巧可能會有。上面的Bas指出了這個「結構搜索」和「結構搜索和替換」功能,它比我預想的更加聰明。 – Mike