Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

มีการเพิ่มวิธีการใหม่ในคลาสเสริมใน Java 9 อย่างไร


คลาสเสริม จัดเตรียมคอนเทนเนอร์ที่อาจมีหรือไม่มี ไม่ใช่ค่าว่าง ค่า. คลาสเสริมนี้แนะนำใน 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; ไม่บังคับ opt =ไม่บังคับของค่า Nullable (str); opt.ifPresentOrElse ( x -> System.out.println(x), () -> System.out.println("ไม่มีค่า")); }}

ผลลัพธ์

ไม่มีค่า 


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("อดิธยา")); สตรีม สตรีม =รายการสตรีม () แผนที่แบบเรียบ (ไม่บังคับ::สตรีม); สตรีมสำหรับแต่ละรายการ (System.out::println); }}

ผลลัพธ์

ใจอดิธยา