我有一個項目,其中近50個類擴展了相同的父類。現在我在父類中添加一個抽象方法。由於所有這些類都會產生編譯時錯誤。 在這種情況下,有沒有什麼辦法在eclipse IDE中一次性添加這個方法的所有子類?一次性在所有類中添加重寫方法
回答
你不需要在這50個類中的每個類中做一些有意義的(和不同的)嗎?如果不是,那麼你應該把實現放在父類中。如果是這樣,那麼在這種情況下,任何類型的「快速修復所有」將會適得其反。基本上,如果eclipse或任何其他IDE都按你的要求做了,它基本上會鼓勵將一個小型編程任務變成一個大型測試/ QA任務。
有關記錄,我認爲this other answer是更優雅的說法。
@ Tim Bender顯然我必須在這個方法中做一些處理。時間。我想要的是,暫時在所有子類中都有一個空方法實現此方法,以消除編譯時錯誤。然後,我將逐個添加邏輯。 – 2013-02-21 09:16:16
我明白你想要什麼。詳細說明我的答案的最後一句...你想要的是**不好!**雖然編譯錯誤可能現在很煩人,但正在編寫的應用程序最好不要編譯,而要編譯幾十個簡單這些已知問題幾乎肯定會導致運行時異常。 – 2013-02-21 09:26:54
我明白了..謝謝。 – 2013-02-21 09:34:14
添加一個簡單的方法,你的父類
/**這應該在子類中重寫! */ @Deprecated 公共無效FOO(){}
實現在子類中的方法。測試方法。
- 重複步驟2,直到方法實現存在於每個子類中。
在父類中創建原始方法摘要
public abstract void foo();
Eclipse不支持這個簡單的答案。
要添加到Tim Bender's answer,這種功能會產生反作用的原因是您無論如何都需要訪問所有這些類以將方法添加到方法中。如果您要自動生成存根方法,那麼您很可能會錯過一個(或更多)方法。因此,您的簡單編碼任務將變成更具挑戰性的調試任務......或者如果您沒有體面的單元和系統測試程序,則會變得更糟。
最好一次添加一個方法,使用編譯器錯誤列表來提醒您仍然需要處理哪些類。 (我發現自己也處於這種情況......而這種方法工程。)
我明白你的意思。謝謝 – 2013-02-21 09:33:48
我認爲如果你有50個不同的實現,你可能會有一些嚴重的設計問題。
如果你想要把相同的代碼在所有課堂上的你應該提供您的抽象的實現,因此編譯器不會抱怨。否則,不要指望Eclipse知道你打算在所有類中寫什麼實現。
如果你的方法不執行任何初始(你不能提供一個有意義的實現它),你只需做你的抽象類:在包瀏覽器
void myMethod() {
// does nothing yet
}
「選擇頂層包。進入'Problems'視圖,應該有「Foo類型必須實現繼承的抽象方法Parent.foo()」(對於給定的類/方法名)的錯誤列表。右鍵單擊錯誤,選擇「Quick固定」。您可以選擇「添加未實現的方法」選項,然後單擊「全選按鈕」以選擇所有子類。 編輯:?這個工程即使每父類多法」 從下面的鏈接複製和它的作品
How to implement unimplemented methods to all child classes in eclipse
- 1. 添加屬性的實體類,如何避免再次寫入所有屬性?
- 2. 如何重寫get和set方法爲所有屬性在類中?
- 3. 向EclipseIDE中的類的所有方法添加方法斷點
- 4. 重寫hashCode方法在類
- 5. 向實現接口的所有類添加一個方法
- 6. 在cakephp中重寫URL以在所有url前添加www
- 7. 重寫組合框的添加方法
- 8. 問題重寫ArrayList添加方法
- 9. 編寫一個添加屬性方法在目標C
- 10. jQuery jqgrid一次添加所有行
- 11. 有沒有辦法在C#中編寫一次性(UnlockBits)位圖?
- 12. 添加驗證屬性與Html.EditorFor次()一個Html.BegingForm()方法中的方法不
- 13. 如何爲所有類編寫方法
- 14. 重寫同樣的方法從兩次同一類
- 15. 如何動態地添加一個類的所有方法到另一個類
- 16. 如何在子類中重寫一個超類方法使重寫的方法,以通過型超類
- 17. 在Ruby中重寫類方法
- 18. 在resharper C++中重寫基類方法
- 19. MKPinAnnotationView一次加載didSelectAnnotationView方法中的所有數據
- 20. 添加所有類
- 21. 字符串類一次性方法
- 22. 有沒有辦法一次性添加所有應用程序圖標(一次),而不是逐個添加所有應用程序圖標?
- 23. 從接口調用一些方法而不重寫JAVA中的所有方法
- 24. 添加一個靜態方法來現有的類在Ruby中
- 25. 有條件地JavaScript重寫類方法
- 26. Python類:添加動態屬性,方法
- 27. 所有方法的JAX-RS @FormParam一次
- 28. 如何添加/重寫方法,而無需在PHP中擴展類?
- 29. 在VisualStudio中查找所有對重寫方法的引用
- 30. 重寫基類的方法,屬性等有多遠.net TreeNode class
這將如何有用你仍然要提供正確的內容... – Puce 2013-02-21 09:09:32
你應該提供更多的上下文和代碼,以便接收你的問題的有意義的答案。 – 2013-02-21 09:28:58
這個問題可以很容易地解決使用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