เมธอด ifPresentOrElse()
Java 9 ปรับปรุง Optional โดยเพิ่มเมธอด ifPresentOrElse() ที่รับ 2 พารามิเตอร์: Consumer (เมื่อมีค่า) และ Runnable (เมื่อไม่มีค่า)
Syntax
public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
การทำงาน
- ถ้า Optional มีค่า -> เรียก
action.accept(value)(เหมือน ifPresent) - ถ้า Optional ว่าง -> เรียก
emptyAction.run()(เพิ่มเติมจาก ifPresent)
ตัวอย่าง
import java.util.Optional;
public class IfPresentOrElseMethodTest {
public static void main(String args[]) {
Optional<Integer> optional = Optional.of(1);
optional.ifPresentOrElse(
x -> System.out.println("Value: " + x),
() -> System.out.println("Not Present")
);
optional = Optional.empty();
optional.ifPresentOrElse(
x -> System.out.println("Value: " + x),
() -> System.out.println("Not Present")
);
}
}
Output
Value: 1 Not Present
ประโยชน์
- เขียน logic แบบ branching ได้ใน 1 statement
- หลีกเลี่ยงการตรวจสอบ
isPresent()แบบ manual - โค้ดกระชับ อ่านง่าย และ expressive มากขึ้น
สรุป
ifPresentOrElse() ช่วยให้จัดการทั้งกรณีมีค่าและไม่มีค่าใน Optional ได้อย่างชัดเจนและเป็น functional style