जावा 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विपरीत पता है । अन्य सभी विधियाँ मूल्य को दर्शाती हैं न कि क्रियाओं को।