Java 8 เลือกเรียน
ตัวเลือกระดับเป็นวัตถุภาชนะที่สามารถจะเป็นโมฆะ ถ้าค่าที่มีอยู่ isPresent () วิธีการส่งกลับจริงเรียกได้ () วิธีการส่งกลับวัตถุ
ตัวเลือกเป็นภาชนะ: มันสามารถเก็บค่าประเภท T, หรือเพียงแค่บันทึก null ข้อเสนอเป็นตัวเลือกวิธีที่มีประโยชน์มากมายดังนั้นเราจึงไม่ได้ดำเนินการตรวจหาค่า null อย่างชัดเจน
แนะนำตัวเลือกของการเรียนเป็นทางออกที่ดียกเว้นชี้โมฆะ
ประกาศคลาส
ต่อไปนี้เป็นคำสั่ง<T> ระดับ java.util.Optional:
public final class Optional<T> extends Object
วิธีการเรียน
เลขที่ | วิธีการและคำอธิบาย |
---|---|
1 | คง <T> ตัวเลือก <T> ว่าง () เช่นตัวเลือกกลับว่างเปล่า |
2 | เท่ากับบูลีน (obj Object) การพิจารณาว่าวัตถุอื่นเท่ากับเป็นตัวเลือก |
3 | ตัวเลือก <T> ตัวกรอง (กริยา < ? ซูเปอร์ <T> คำกริยา) ถ้าค่าที่มีอยู่และความคุ้มค่านี้ตรงกับคำกริยาได้รับผลตอบแทนคำอธิบายตัวเลือกสำหรับค่านี้มิฉะนั้นจะส่งกลับว่างเปล่าเป็นตัวเลือก |
4 | <u> ตัวเลือก <u> flatMap (ฟังก์ชั่ <? ซูเปอร์ T, ตัวเลือก <U >> Mapper) ถ้าค่าอยู่ค่าส่งกลับวิธีการจับคู่เป็นตัวเลือกที่มีอยู่นี้จะขึ้นอยู่มิฉะนั้นจะส่งกลับว่างเปล่าเป็นตัวเลือก |
5 | t ได้ () หากคุณรวมค่าในตัวเลือกค่าตอบแทนนี้มิฉะนั้นยกเว้นจะโยน: NoSuchElementException |
6 | int hashCode () ส่งคืนค่ารหัสกัญชาที่มีอยู่กลับ 0 ถ้าค่าไม่ได้อยู่ |
7 | เป็นโมฆะ ifPresent (Consumer <? ซุปเปอร์ T > ผู้บริโภค) หากมีค่าเป็นมูลค่าปัจจุบันจะใช้ในการเรียกร้องของผู้บริโภคเป็นอย่างอื่นไม่ทำอะไรเลย |
8 | isPresent บูลีน () ถ้าค่าที่มีอยู่วิธีการส่งกลับจริงมิฉะนั้นกลับเท็จ |
9 | <u> ตัวเลือก <u> แผนที่ (ฟังก์ชั่ <? ซูเปอร์ T,? ขยาย u> Mapper) ถ้าค่าของวิธีการทำแผนที่ที่แสดงตนที่ให้ไว้ถ้ามันส่งกลับ null ไม่ใช่ผลตอบแทนคำอธิบายตัวเลือก |
10 | คง <T> ตัวเลือก <T> ของ (T คุ้มค่า) ส่งกลับตัวเลือกค่าที่ไม่ใช่ null ระบุ |
11 | คง <T> ตัวเลือก <T> ofNullable (T คุ้มค่า) ถ้าไม่ใช่ null กลับค่าที่ระบุอธิบายตัวเลือกมิฉะนั้นตัวเลือกที่ว่างเปล่า |
12 | T orElse (T อื่น ๆ ) ถ้าค่าอยู่ค่าตอบแทนอื่น ๆ อื่น ๆ |
13 | T orElseGet (ผู้ผลิต <? ขยาย T > อื่น ๆ ) ถ้าค่าอยู่ค่าตอบแทนอย่างอื่นเรียกอื่น ๆ และผลตอบแทนการเรียกร้องอื่น ๆ |
14 | <X ขยาย Throwable> T orElseThrow ( ผู้ผลิต <? ขยาย X> exceptionSupplier) หากมีค่าเป็นปัจจุบันค่าตอบแทนมีโยนเป็นอย่างอื่นโดยผู้ผลิตได้รับการถ่ายทอดความผิดปกติ |
15 | String toString () ส่งกลับสตริงไม่ว่างเปล่าที่เลือกใช้ในการแก้ปัญหา |
หมายเหตุ: วิธีการเหล่านี้ได้รับมาจากชั้น java.lang.Objectมา
ตัวอย่างตัวเลือก
เราสามารถผ่านตัวอย่างต่อไปนี้เพื่อทำความเข้าใจการใช้งานของการเรียนไม่จำเป็น:
import java.util.Optional; public class Java8Tester { public static void main(String args[]){ Java8Tester java8Tester = new Java8Tester(); Integer value1 = null; Integer value2 = new Integer(10); // Optional.ofNullable - 允许传递为 null 参数 Optional<Integer> a = Optional.ofNullable(value1); // Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException Optional<Integer> b = Optional.of(value2); System.out.println(java8Tester.sum(a,b)); } public Integer sum(Optional<Integer> a, Optional<Integer> b){ // Optional.isPresent - 判断值是否存在 System.out.println("第一个参数值存在: " + a.isPresent()); System.out.println("第二个参数值存在: " + b.isPresent()); // Optional.orElse - 如果值存在,返回它,否则返回默认值 Integer value1 = a.orElse(new Integer(0)); //Optional.get - 获取值,值需要存在 Integer value2 = b.get(); return value1 + value2; } }
การดำเนินงานของสคริปดังกล่าวข้างต้นออกเป็น:
$ javac Java8Tester.java $ java Java8Tester 第一个参数值存在: false 第二个参数值存在: true 10