जावा 8 का उपयोग अब 6+ महीने से कर रहा है, मैं नए एपीआई परिवर्तनों से बहुत खुश हूं। एक क्षेत्र जिसका मुझे अभी भी भरोसा नहीं है कि कब उपयोग करना है Optional
। मुझे लगता है कि हर जगह इसका उपयोग करने के इच्छुक लोगों के बीच झूलना संभव है null
, और कहीं भी नहीं।
ऐसा लगता है कि जब मैं इसका इस्तेमाल कर सकता हूं तो बहुत सारी स्थितियां बन सकती हैं, और मुझे यकीन नहीं है कि यह लाभ (पठनीयता / अशक्त सुरक्षा) जोड़ता है या सिर्फ अतिरिक्त उपरि का कारण बनता है।
इसलिए, मेरे कुछ उदाहरण हैं, और मुझे इस बात पर दिलचस्पी होगी कि क्या Optional
लाभकारी है या नहीं।
1 - जब विधि वापस आ सकती है तो एक सार्वजनिक विधि वापसी प्रकार के रूप में null
:
public Optional<Foo> findFoo(String id);
2 - जब पैरामीटर हो सकता है एक विधि पैरामीटर के रूप में null
:
public Foo doSomething(String id, Optional<Bar> barOptional);
3 - एक सेम के वैकल्पिक सदस्य के रूप में:
public class Book {
private List<Pages> pages;
private Optional<Index> index;
}
4 - में Collections
:
सामान्य तौर पर मुझे नहीं लगता:
List<Optional<Foo>>
कुछ भी जोड़ता है - विशेष रूप से चूंकि कोई मानों आदि filter()
को हटाने के लिए उपयोग कर सकता है null
, लेकिन क्या Optional
संग्रह में कोई अच्छा उपयोग है ?
जो भी केस छूटे हैं?
.filter(Optional::absent)
"शून्य मान" बाहर
getOrDefault()
?
Map<Character, String>
। अगर कोई प्रतिस्थापन नहीं है तो मैं इसका उपयोग कर सकता हूंOptional.ofNullable(map.get(c)).orElse(String.valueOf(c))
:। यह भी ध्यान रखें कि वैकल्पिक अमरूद चोरी हो गया था और इसमें बहुत अच्छा सिंटैक्स है:Optional.fromNullable(map.get(c)).or(String.valueOf(c));