คลาสเสริม จัดเตรียมคอนเทนเนอร์ที่อาจมีหรือไม่มี ไม่ใช่ค่าว่าง ค่า. คลาสเสริมนี้แนะนำใน Java 8 เพื่อลดจำนวนตำแหน่งในโค้ดที่ NullPointerException สามารถสร้างได้ Java 9 เพิ่มวิธีการใหม่สามวิธีในคลาสทางเลือก:หรือ() , ifPresentOrElse() และ สตรีม() ที่ช่วยให้เราจัดการกับ ค่าเริ่มต้น ค่า
Optional.or()
The หรือ() วิธีการที่แนะนำใน Java 9 และพารามิเตอร์ของวิธีนี้เป็นอินเทอร์เฟซที่ใช้งานได้ ซัพพลายเออร์ . วิธีนี้ทำให้เรามี ตัวเลือก . เสมอ วัตถุที่ไม่ว่างเปล่า หากออบเจ็กต์ Optional ไม่ว่างเปล่า จะส่งคืน ตัวเลือก วัตถุนั้นเอง มิฉะนั้น จะส่งคืนอ็อบเจ็กต์ Optional ที่ Supplier สร้าง
ตัวอย่าง
นำเข้า java.io.IOException; นำเข้า java.util.Optional; คลาสสาธารณะ OptionalOrMethodTest { โมฆะคงที่สาธารณะหลัก (สตริง [] args) พ่น IOException { สตริง str =null; ไม่บังคับopt =ไม่บังคับของค่า Nullable (str); ไม่บังคับ ผลลัพธ์ =opt.or (() -> ตัวเลือกของ ("อทิตยา")); System.out.println(ผลลัพธ์); } }
ผลลัพธ์
ไม่บังคับ[Adithya]
Optional.ifPresentOrElse()
The ifPresentOrElse() วิธีการที่แนะนำใน Java 9 คล้ายกับ ifPresent() วิธีที่มีความแตกต่างอย่างหนึ่งคือเราได้เพิ่ม Runnable . อีกหนึ่งรายการ พารามิเตอร์. ในกรณีที่ ไม่บังคับ วัตถุว่างเปล่า วัตถุของ Runnable อินเทอร์เฟซสามารถดำเนินการได้
ตัวอย่าง
<ก่อน>นำเข้า java.util.Optional; คลาสสาธารณะ OptionalIfPresentOrElseTest { โมฆะสาธารณะสาธารณะหลัก (สตริง [] args) { สตริง str =null; ไม่บังคับผลลัพธ์
ไม่มีค่า
Optional.stream()
The Optional.stream() รองรับเมธอดตั้งแต่ Java 9 เมธอดนี้ใช้สร้างอ็อบเจ็กต์สตรีมใหม่จาก ทางเลือก วัตถุ. หากออบเจ็กต์ Optional มีค่า ก็จะส่งคืนออบเจกต์สตรีมที่มีค่านั้น
ตัวอย่าง
<ก่อน> นำเข้า java.io.IOException; นำเข้า java.util.List; นำเข้า java.util.Optional; นำเข้า java.util.stream.Stream; คลาสสาธารณะ OptionalStreamMethodTest { โมฆะสาธารณะหลัก (สตริง [] args) พ่น IOException { รายการ<ตัวเลือก<สตริง>> list =List.of ( Optional.of("ใจ"), Optional.empty() , Optional.of("อดิธยา")); สตรีมผลลัพธ์
ใจอดิธยา