ฝรั่ง - คลาสเสริม

ทางเลือกคือวัตถุที่ไม่เปลี่ยนรูปที่ใช้เพื่อบรรจุวัตถุที่ไม่เป็นค่าว่าง อ็อบเจ็กต์ทางเลือกใช้เพื่อแทนค่าว่างโดยไม่มีค่า คลาสนี้มีวิธีการยูทิลิตี้ที่หลากหลายเพื่ออำนวยความสะดวกให้โค้ดจัดการกับค่าที่พร้อมใช้งานหรือไม่มีแทนการตรวจสอบค่าว่าง

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ 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