我有一個ClassA
這是我在項目的各個領域使用我的許多組件和庫。
現在我需要添加一個額外的成員到這個類中,但由於它不會被其他區域需要/使用,所以它不適合extend
這個類。
如果我將該成員添加到ClassA
而不是extending
我會有什麼問題嗎?一切都需要重建嗎?我需要在這裏重建Java嗎?
1
A
回答
5
添加新成員可保留二進制兼容性,另請參閱Java語言規範的Chapter 13. Binary Compatibility。
顯然你需要重建修改的類,但不是使用修改後的類。
1
除非您現有的聯繫人和ClassA與其他類之間的交互BREAK,否則應該沒有問題。但是,如果您更改其他類使用的方法的簽名,則可能會在找到舊版本的方法時遇到運行時錯誤,因爲它不再存在。
+0
除非他們*破*,你的意思是。 – EJP
-1
如果你改變你的A類,顯然需要重建。爲了最大限度地減少影響,您可以擴展A類並使用子類來完成工作。其他組件和庫將繼續使用您的類A,而您的代碼現在應該引用具有添加成員的sublcass。
同樣,這取決於你如何定義你的對象。
+0
不正確,請參閱其他答案和引用。 – EJP
相關問題
- 1. 我需要在這裏擁有@property嗎?
- 2. Java for循環,我需要在這裏繼續聲明嗎?
- 3. 這裏需要揮發嗎?
- 4. 這裏需要Cloneable嗎?
- 5. 這裏需要$ timeout嗎?
- 6. 這裏需要Zend_Form_Element_Image嗎?
- 7. 這裏需要「原子」嗎?
- 8. 這裏需要同步嗎?
- 9. javascript的承諾,在這裏需要嗎?
- 10. 在這裏需要`std :: move`嗎?
- 11. 應該在這裏使用重要嗎?
- 12. 斯卡拉會在這裏消除重複的需要嗎?
- 13. MSBuild:我需要目標重建嗎?
- 14. SQL我在這裏需要幫助
- 15. 這裏需要os.path.join(dir,filename)嗎?
- 16. 這裏需要一個哈希表嗎?
- 17. 我需要在這裏使用尾隨分號嗎?
- 18. 我需要將適配器類'在這裏'嗎?
- 19. 是我在這裏需要的交易嗎?
- 20. 在這裏同步需要
- 21. 我可以在這裏創建Thread.stop()嗎?
- 22. jQuery每一個,我需要在這裏創建一個閉包?
- 23. 對承諾感到困惑。我需要回到這裏嗎?
- 24. 我需要在Rails ActiveRecord中重寫這個SQL查詢嗎?
- 25. 我可以在這裏使用preg_replace()嗎?還是我需要使用preg_split()?
- 26. C++ - shuffle:從這裏需要
- 27. 這裏是否需要htmlspecialchars?
- 28. 我們真的需要在Java RMI中創建存根嗎?
- 29. 在javascript需要放在這裏
- 30. 我需要測試這個嗎?
您的classpath是否包含'ClassA'的兩個版本? – 2012-10-11 08:32:19
@Tichodroma:沒有。 – Jim