मैं जावा 8 में एपीआई की ifPresent()
विधि को समझने की कोशिश कर रहा हूं Optional
।
मेरे पास सरल तर्क हैं:
Optional<User> user=...
user.ifPresent(doSomethingWithUser(user.get()));
लेकिन यह एक संकलन त्रुटि का परिणाम है:
ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here)
बेशक मैं ऐसा कुछ कर सकता हूं:
if(user.isPresent())
{
doSomethingWithUser(user.get());
}
लेकिन यह बिल्कुल एक बरबाद null
चेक की तरह है ।
यदि मैं इस में कोड बदलता हूं:
user.ifPresent(new Consumer<User>() {
@Override public void accept(User user) {
doSomethingWithUser(user.get());
}
});
कोड डर्टियर हो रहा है, जो मुझे पुराने null
चेक पर वापस जाने के बारे में सोचता है ।
कोई विचार?