在java 8中引入靜態方法和默認方法有什麼好處,因爲我發現它會增加代碼中的複雜性和模糊性。請帶一些這個。java中允許聲明靜態方法這樣做的好處是什麼
-2
A
回答
2
優點很明顯:界面中的靜態方法允許將工廠(如Stream.of
)放置在他們所屬的地方。以前,您需要一個StreamUtil
類或類似的來保存它們。爲了在Collections API中引入面向Stream的良好性,Defender方法(「默認」)是絕對必須的,並且它們是一個非常有用的特性,允許使用便捷方法自由增長API,這些方法只依賴其他方法公共API。
沒有複雜性或模糊性被添加到您的代碼,特別是因爲靜態方法不可繼承。
1
具有默認方法的最大優點是您可以爲新功能演化API,即使它已經發布也不會破壞API用戶的實現。
靜態方法可以省去實用程序類,因爲可以在接口中編寫實現。
相關問題
- 1. 爲什麼java允許這樣做?
- 2. 是否可能的良好做法時聲明方法靜態?
- 3. 爲什麼C#不允許變量在方法中聲明爲靜態?
- 4. 在ClassA中導入ClassA的聲明?爲什麼設計師允許這樣做?
- 5. 是否允許在Java中聲明頂級類爲靜態
- 6. C - 爲什麼我允許這樣做?
- 7. 爲什麼靜態塊中不允許使用靜態字段聲明?
- 8. 爲什麼java的允許靜態泛型方法
- 9. 在Python中這樣做的最好方法是什麼?
- 10. 這個Fortran參數聲明是做什麼的,它爲什麼這樣做?
- 11. 這樣做的方法是什麼?
- 12. 在非靜態類中聲明一個靜態方法的意義是什麼?
- 13. 不是允許在main方法聲明
- 14. 這個typedef聲明是做什麼的?
- 15. Ruby中的Java靜態方法是什麼樣的?
- 16. 什麼是聲明靜態可變值的正確方法
- 17. 爲什麼允許靜態方法調用私有方法?
- 18. 這是什麼樣的聲明者?
- 19. 這是什麼樣的聲明?
- 20. 在Java中,靜態方法中聲明的變量本身是靜態的嗎?
- 21. 靜態方法get - 這是不好的做法嗎?
- 22. 這個錯誤的含義是什麼「聲明實例方法後不允許聲明實例字段」。
- 23. 什麼應該是「你不允許這樣做......」的Http狀態碼?
- 24. 爲什麼在靜態方法中不允許使用「this」?
- 25. 爲什麼applet中允許使用非靜態方法?
- 26. 允許在非抽象類中聲明抽象方法的目的是什麼?
- 27. 是否允許使用foreach這樣做?
- 28. 在Java API中是否有一個LayoutManager允許我這樣做?
- 29. 什麼時候應該在基類中聲明靜態方法?
- 30. 處理中不允許的靜態方法?
你能解釋一下「你的代碼會增加複雜性和模糊性」嗎? – Pshemo 2015-03-02 20:07:03
請參閱[這裏](http://stackoverflow.com/q/19998309/2711488)和[這裏](http://stackoverflow.com/q/25098937/2711488) – Holger 2015-03-03 09:21:54