現在我們有番石榴的Optional
和建設者模式。每本書/博客都說避免空值。處理遺留代碼或明確需要它的協議時,我們必須使用它們。但是有沒有其他的用例是有用的,或者它是最好的選擇?何時爲空有用?
Q
何時爲空有用?
-1
A
回答
3
這對未初始化的變量很有用。作爲一個有效值是否有用是另一個依賴於你的編程模型的問題。例如,如果你有一個模型,你的目的是生產很少或沒有垃圾,可選不是一個選項,並且不會產生垃圾。
在極端情況下,您的目標可能是產生1 GB /小時或低至1 GB /天的垃圾。這使您可以運行一天或一週而無需次要收集。在「正常的」Java編程中,缺乏使用這些包裝中的一個可能是懶惰造成的。這是更多的努力,因爲沒有什麼可感知的收益(因爲我從來沒有打算將NPE寫入我的代碼中)。有什麼是有用的工具,比如您的IDE爲您填充此代碼。例如IntelliJ會告訴你,如果你有一個價值可能是null
和cn介紹運行時檢查。
+2
我喜歡_'Optional'不是一個選項_。附: Java 8的'Optional'產生的垃圾更少。 –
相關問題
- 1. CBPeripheral name有時爲空
- 2. 主機名有時爲空
- 3. Three.js canvas.toDataURL有時爲空
- 4. 爲什麼使用ASP.NET ReportViewer時HttpContext.Current有時爲空?
- 5. 使用「高效適配器」時,持有者有時爲空
- 6. C#ASP.NET:如何訪問緩存時沒有HttpContext.Current可用(爲空)?
- 7. 短的弱引用何時變爲空?
- 8. 什麼時候Request.Form [「name」]爲空,何時爲空字符串?
- 9. 如何顯示空值時,FK爲空
- 10. 何時ProfileDataRequestContext.RequestedClaimTypes不爲空?
- 11. Firefox GOJS Canvas有時在加載時爲空白/空
- 12. GridView爲空時SelectedIndexChanged調用
- 13. 使用telnet時MimeMessage爲空?
- 14. set1爲空時爲什麼set1爲空?
- 15. 爲什麼CodeContract有關空引用的警告,當ObjectInvariant檢查爲空時
- 16. 何時使用空,空白,空?
- 17. IHttpAuthenticationFeature.Handler爲空時
- 18. 當列爲空時,爲什麼bcp輸出爲null,而列爲空時爲空?
- 19. 的GetData包括有時爲空
- 20. ClipData有時在Android中爲空
- 21. WebView標題有時不應該爲空
- 22. 適配器converView有時爲空
- 23. PHP $ _POST變量有時爲空
- 24. 輪廓路徑有時爲空
- 25. 時,所有的數據爲空
- 26. 全局變量有時會變爲空
- 27. Geocoder有時返回地址爲空
- 28. Android onActivityResult。成員變量有時爲空
- 29. 輸入字段爲空時有效嗎?
- 30. CountDownTimer的onTick getView()返回有時爲空
值得注意的是,Java 8有自己的['Optional'](http://download.java.net/jdk8/docs/api/java/util/Optional.html)。 –