2013-02-21 57 views
3

我有一個項目,其中近50個類擴展了相同的父類。現在我在父類中添加一個抽象方法。由於所有這些類都會產生編譯時錯誤。 在這種情況下,有沒有什麼辦法在eclipse IDE中一次性添加這個方法的所有子類?一次性在所有類中添加重寫方法

+2

這將如何有用你仍然要提供正確的內容... – Puce 2013-02-21 09:09:32

+0

你應該提供更多的上下文和代碼,以便接收你的問題的有意義的答案。 – 2013-02-21 09:28:58

+1

這個問題可以很容易地解決使用eclipse [「源/清理」功能](http://stackoverflow.com/questions/8099969/how-to -implement-unimplemented-methods-to-all-child-classes-in-eclipse/15110880#15110880)。 – YROjha 2013-02-27 11:43:08

回答

5

你不需要在這50個類中的每個類中做一些有意義的(和不同的)嗎?如果不是,那麼你應該把實現放在父類中。如果是這樣,那麼在這種情況下,任何類型的「快速修復所有」將會適得其反。基本上,如果eclipse或任何其他IDE都按你的要求做了,它基本上會鼓勵將一個小型編程任務變成一個大型測試/ QA任務。

有關記錄,我認爲this other answer是更優雅的說法。

+0

@ Tim Bender顯然我必須在這個方法中做一些處理。時間。我想要的是,暫時在所有子類中都有一個空方法實現此方法,以消除編譯時錯誤。然後,我將逐個添加邏輯。 – 2013-02-21 09:16:16

+1

我明白你想要什麼。詳細說明我的答案的最後一句...你想要的是**不好!**雖然編譯錯誤可能現在很煩人,但正在編寫的應用程序最好不要編譯,而要編譯幾十個簡單這些已知問題幾乎肯定會導致運行時異常。 – 2013-02-21 09:26:54

+0

我明白了..謝謝。 – 2013-02-21 09:34:14

0
  1. 添加一個簡單的方法,你的父類

    /**這應該在子類中重寫! */ @Deprecated 公共無效FOO(){}

  2. 實現在子類中的方法。測試方法。

  3. 重複步驟2,直到方法實現存在於每個子類中。
  4. 在父類中創建原始方法摘要

    public abstract void foo();

3

Eclipse不支持這個簡單的答案。

要添加到Tim Bender's answer,這種功能會產生反作用的原因是您無論如何都需要訪問所有這些類以將方法添加到方法中。如果您要自動生成存根方法,那麼您很可能會錯過一個(或更多)方法。因此,您的簡單編碼任務將變成更具挑戰性的調試任務......或者如果您沒有體面的單元和系統測試程序,則會變得更糟。

最好一次添加一個方法,使用編譯器錯誤列表來提醒您仍然需要處理哪些類。 (我發現自己也處於這種情況......而這種方法工程。)

+0

我明白你的意思。謝謝 – 2013-02-21 09:33:48

0

我認爲如果你有50個不同的實現,你可能會有一些嚴重的設計問題。

如果你想要把相同的代碼在所有課堂上的你應該提供您的抽象的實現,因此編譯器不會抱怨。否則,不要指望Eclipse知道你打算在所有類中寫什麼實現。

如果你的方法不執行任何初始(你不能提供一個有意義的實現它),你只需做你的抽象類:在包瀏覽器

void myMethod() { 
    // does nothing yet 
} 
1

「選擇頂層包。進入'Problems'視圖,應該有「Foo類型必須實現繼承的抽象方法Parent.foo()」(對於給定的類/方法名)的錯誤列表。右鍵單擊錯誤,選擇「Quick固定」。您可以選擇「添加未實現的方法」選項,然後單擊「全選按鈕」以選擇所有子類。 編輯:?這個工程即使每父類多法」 從下面的鏈接複製和它的作品

How to implement unimplemented methods to all child classes in eclipse

相關問題