दोनों Optional.ifPresentOrElse() और Optional.or() मेथड जावा 9 संस्करण में इसकी कार्यक्षमता में सुधार के लिए पेश किए गए हैं। Optional.ifPresentOrElse() मेथड जांचता है कि क्या मान मौजूद है, मान के साथ एक्शन लागू करता है, अन्यथा खाली एक्शन लौटाता है जबकि Optional.or() मेथड जांचता है कि क्या मान मौजूद है, मान वाला ऑप्शनल लौटाता है, अन्यथा सप्लायर फंक्शन पर लागू ऑप्शनल लौटाता है। Optional.ifPresentOrElse() मेथड में दो पैरामीटर होते हैं, Consumer और Runnable जबकि Optional.or() मेथड में केवल एक पैरामीटर होता है, Supplier।
Optional.ifPresentOrElse() का सिंटैक्स:
public void ifPresentOrElse(Consumer super T> action, Runnable emptyAction)
उदाहरण
import java.util.Optional;
import java.util.concurrent.atomic.AtomicInteger;
public class IfPresentOrElseMethodTest {
public static void main(String args[]) {
optionalIsPresent();
optionalIsEmpty();
}
private static void optionalIsPresent() {
Optional optional = Optional.of("Test");
AtomicInteger successCounter = new AtomicInteger();
AtomicInteger emptyOptionalsCounter = new AtomicInteger();
optional.ifPresentOrElse(x -> successCounter.incrementAndGet(), () -> emptyOptionalsCounter.incrementAndGet());
System.out.println(successCounter.get());
System.out.println(emptyOptionalsCounter.get());
}
private static void optionalIsEmpty() {
Optional optional = Optional.empty();
AtomicInteger successCounter = new AtomicInteger();
AtomicInteger emptyOptionalsCounter = new AtomicInteger();
optional.ifPresentOrElse(x -> successCounter.incrementAndGet(), () -> emptyOptionalsCounter.incrementAndGet());
System.out.println(successCounter.get());
System.out.println(emptyOptionalsCounter.get());
}
}
आउटपुट
1 0 0 1
Optional.or() का सिंटैक्स:
public Optionalor(Supplier extends Optional extends T>> supplier)
उदाहरण
import java.util.Optional;
public class OptionalOrMethodTest {
public static void main(String args[]) {
optionalIsPresent();
optionalIsEmpty();
}
private static void optionalIsPresent() {
Optional optional1 = Optional.of("Test1");
Optional optional2 = Optional.of("Test2");
Optional optional3 = optional1.or(() -> optional2);
System.out.println(optional3.get());
}
private static void optionalIsEmpty() {
Optional optional1 = Optional.empty();
Optional optional2 = Optional.of("Test2");
Optional optional3 = optional1.or(() -> optional2);
System.out.println(optional3.get());
}
}
आउटपुट
Test1 Test2