जावा 8 में, मैं एक Optional
वस्तु के लिए कुछ करना चाहता हूं यदि वह मौजूद है, और दूसरी चीज है अगर वह मौजूद नहीं है।
if (opt.isPresent()) {
System.out.println("found");
} else {
System.out.println("Not found");
}
यह एक 'कार्यात्मक शैली' नहीं है, हालांकि।
Optional
एक ifPresent()
विधि है, लेकिन मैं एक orElse()
विधि को चेन करने में असमर्थ हूं ।
इस प्रकार, मैं नहीं लिख सकता:
opt.ifPresent( x -> System.out.println("found " + x))
.orElse( System.out.println("NOT FOUND"));
@Assylias के जवाब में, मुझे नहीं लगता Optional.map()
कि निम्नलिखित मामले के लिए काम करता है:
opt.map( o -> {
System.out.println("while opt is present...");
o.setProperty(xxx);
dao.update(o);
return null;
}).orElseGet( () -> {
System.out.println("create new obj");
dao.save(new obj);
return null;
});
इस स्थिति में, जब opt
मैं उपस्थित होता हूं, मैं इसकी संपत्ति को अपडेट करता हूं और डेटाबेस में सहेजता हूं। जब यह उपलब्ध नहीं होता है, तो मैं एक नया बनाता हूं obj
और डेटाबेस में सहेजता हूं ।
दो लंबोदर में ध्यान दें मुझे वापस लौटना है null
।
लेकिन जब opt
मौजूद होगा, तो दोनों लंबों को निष्पादित किया जाएगा। obj
अद्यतन किया जाएगा, और एक नई वस्तु डेटाबेस में सहेजी जाएगी। इसका कारण return null
पहले मेमने में है। और orElseGet()
अंजाम देता रहेगा।
return null;
साथ बदलें return o;
। हालांकि, मुझे इस बात का अहसास है कि आप गलत जगह पर काम कर रहे हैं। आपको उस साइट पर काम करना चाहिए जो उस का उत्पादन करती है Optional
। उस स्थान पर मध्यवर्ती के बिना वांछित संचालन करने का एक तरीका होना चाहिए Optional
।
ifPresent
विपरीत पता है । अन्य सभी विधियाँ मूल्य को दर्शाती हैं न कि क्रियाओं को।