ฝรั่ง - คลาสเสริม
ทางเลือกคือวัตถุที่ไม่เปลี่ยนรูปที่ใช้เพื่อบรรจุวัตถุที่ไม่เป็นค่าว่าง อ็อบเจ็กต์ทางเลือกใช้เพื่อแทนค่าว่างโดยไม่มีค่า คลาสนี้มีวิธีการยูทิลิตี้ที่หลากหลายเพื่ออำนวยความสะดวกให้โค้ดจัดการกับค่าที่พร้อมใช้งานหรือไม่มีแทนการตรวจสอบค่าว่าง
การประกาศคลาส
ต่อไปนี้เป็นคำประกาศสำหรับ com.google.common.base.Optional<T> ชั้นเรียน -
@GwtCompatible(serializable = true)
public abstract class Optional<T>
extends Object
implements Serializable
วิธีการเรียน
ซีเนียร์ No | วิธีการและคำอธิบาย |
---|---|
1 | static <T> Optional<T> absent() ส่งคืนอินสแตนซ์เสริมที่ไม่มีการอ้างอิง |
2 | abstract Set<T> asSet() ส่งคืนชุดซิงเกิลตันที่ไม่เปลี่ยนรูปซึ่งมีองค์ประกอบเดียวเท่านั้นที่เป็นอินสแตนซ์ที่มีอยู่หากมีอยู่ ชุดที่ว่างเปล่าไม่เปลี่ยนรูปเป็นอย่างอื่น |
3 | abstract boolean equals(Object object) ส่งคืนค่าจริงหากอ็อบเจ็กต์เป็นอินสแตนซ์ที่เป็นทางเลือกและการอ้างอิงที่มีอยู่มีค่าเท่ากันหรือไม่มีทั้งสองอย่าง |
4 | static <T> Optional<T> fromNullable(T nullableReference) ถ้า nullableReference ไม่ใช่ null ให้ส่งคืนอินสแตนซ์เสริมที่มีการอ้างอิงนั้น มิฉะนั้นจะส่งคืนขาด () |
5 | abstract T get() ส่งคืนอินสแตนซ์ที่มีอยู่ซึ่งต้องมีอยู่ |
6 | abstract int hashCode() ส่งคืนรหัสแฮชสำหรับอินสแตนซ์นี้ |
7 | abstract boolean isPresent() ส่งคืนค่าจริงหากเจ้าของนี้มีอินสแตนซ์ (ไม่ใช่ค่าว่าง) |
8 | static <T> Optional<T> of(T reference) ส่งคืนอินสแตนซ์ทางเลือกที่มีการอ้างอิงที่ไม่ใช่ค่าว่างที่กำหนด |
9 | abstract Optional<T> or(Optional<? extends T> secondChoice) ส่งคืนตัวเลือกนี้หากมีค่าปัจจุบัน secondChoice เป็นอย่างอื่น |
10 | abstract T or(Supplier<? extends T> supplier) ส่งคืนอินสแตนซ์ที่มีอยู่หากมีอยู่ supplier.get () เป็นอย่างอื่น |
11 | abstract T or(T defaultValue) ส่งคืนอินสแตนซ์ที่มีอยู่หากมีอยู่ defaultValue เป็นอย่างอื่น |
12 | abstract T orNull() ส่งคืนอินสแตนซ์ที่มีอยู่หากมีอยู่ เป็นโมฆะมิฉะนั้น |
13 | static <T> Iterable<T> presentInstances(Iterable<? extends Optional<? extends T>> optionals) ส่งคืนค่าของแต่ละอินสแตนซ์ปัจจุบันจากตัวเลือกที่ให้มาตามลำดับโดยจะข้ามผ่านเหตุการณ์ที่ไม่มี () |
14 | abstract String toString() ส่งคืนการแสดงสตริงสำหรับอินสแตนซ์นี้ |
15 | abstract <V> Optional<V> transform(Function<? super T,V> function) หากมีอินสแตนซ์อยู่อินสแตนซ์จะถูกแปลงด้วยฟังก์ชันที่กำหนด มิฉะนั้นจะส่งกลับ () ขาดหายไป |
วิธีการสืบทอด
คลาสนี้สืบทอดวิธีการจากคลาสต่อไปนี้ -
- java.lang.Object
ตัวอย่างคลาสเสริม
สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกในการพูด C:/> Guava.
GuavaTester.java
import com.google.common.base.Optional;
public class GuavaTester {
public static void main(String args[]) {
GuavaTester guavaTester = new GuavaTester();
Integer value1 = null;
Integer value2 = new Integer(10);
//Optional.fromNullable - allows passed parameter to be null.
Optional<Integer> a = Optional.fromNullable(value1);
//Optional.of - throws NullPointerException if passed parameter is null
Optional<Integer> b = Optional.of(value2);
System.out.println(guavaTester.sum(a,b));
}
public Integer sum(Optional<Integer> a, Optional<Integer> b) {
//Optional.isPresent - checks the value is present or not
System.out.println("First parameter is present: " + a.isPresent());
System.out.println("Second parameter is present: " + b.isPresent());
//Optional.or - returns the value if present otherwise returns
//the default value passed.
Integer value1 = a.or(new Integer(0));
//Optional.get - gets the value, value should be present
Integer value2 = b.get();
return value1 + value2;
}
}
ตรวจสอบผลลัพธ์
รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้ -
C:\Guava>javac GuavaTester.java
ตอนนี้เรียกใช้ GuavaTester เพื่อดูผลลัพธ์
C:\Guava>java GuavaTester
ดูผลลัพธ์
First parameter is present: false
Second parameter is present: true
10