अमरूद के Optional
प्रकार का उपयोग कर के रूप में एक विधि का तर्क है कि आप नहीं बसOptional.absent() पासिंग तरीकों को महत्व देता concisely
// method declaration
public void foo(Optional<String> arg);
// compiler error
foo(Optional.absent());
प्रकार निष्कर्ष की वजह से नाकाम रहने लिख सकते हैं, लेकिन इसके बजाय जोड़ने के लिए है के साथ एक समस्या स्पष्ट रूप से टाइप करें:
// real method call
foo(Optional.<String> absent());
मैं इससे कैसे बच सकता हूं?
वास्तव में एक बेहतर तरीका नहीं है, लेकिन एफवाईआई, 'वैकल्पिक' विधि विधि तर्क प्रकार के मुकाबले रिटर्न वैल्यू के रूप में अधिक सामान्य रूप से उपयोग किया जाता है। (यह भूलना बहुत आसान है कि किसी विधि से वापसी मूल्य आपके द्वारा लिखे गए विधि के तर्क से शून्य हो सकता है।) –
एक जटिल अभिव्यक्ति के साथ, मैं एक उचित प्रकार के स्थानीय चर का उपयोग करता हूं (असाइनमेंट के आरएचएस पर कुछ और पठनीय पाने के लिए कोई प्रकार परिवर्तनीय की आवश्यकता नहीं है)। लेकिन संकल्प आने तक शायद कुछ भी नहीं किया जा सकता है (शायद जेडीके 8)। – maaartinus
@LouisWasserman अभी भी 'वैकल्पिक' तर्क के रूप में उपयोग करने के लाभ हैं: 1) यह एपीआई के उपयोगकर्ताओं को स्पष्ट करता है कि एक तर्क अनुपस्थित हो सकता है; 2) इसे किसी अन्य विधि के वापसी मूल्य को पार करना आसान बनाता है। –