guava Optional 對象使用

guava Optional  

測試代碼

public static void main(String[] args) {
    Optional<Integer> object1 = Optional.of(Integer.valueOf(1));
    Optional<Integer> object2 = Optional.absent();
    Optional<Integer> object3 = Optional.fromNullable(Integer.valueOf(1));

    System.out.println(object1.get());
    System.out.println(object1.or(Integer.valueOf(3)));
    System.out.println(object1.orNull());
    if (object1.isPresent()){
        System.out.println("object1 present");
    }

    try {
        System.out.println(object2.get());
    }catch (Exception e){
        System.out.println("exception when get absent object");
    }
    System.out.println(object2.or(Integer.valueOf(3)));
    System.out.println(object2.orNull());
    if (object2.isPresent()){
        System.out.println("object2 present");
    }

    System.out.println(object3.get());
    System.out.println(object3.or(Integer.valueOf(3)));
    System.out.println(object3.orNull());
    if (object3.isPresent()){
        System.out.println("object3 present");
    }
}

運行結果

1
1
1
object1 present
exception when get absent object
3
null
1
1
1
object3 present

 

小結

在Guava中一個Optional對象可以包含一個非空的對象,每一個Optional實例要麼包含一個非空的對象,要麼什麼都不包含,不會出現包含一個空引用的情況。因此一個Optional對象定義了兩種類型來分別表示它們: Present和Absent。

根據具體的需要,創建不同的Optional實例:

創建一個包含非空對象的Optional: Optional.of(T)
創建一個不包含對象的Optional: Optional.absent()
從一個可空的對象返回的Optional: Optional.fromNullable(T)

每一個實例此時就可以通過實例方法來獲得被包裝的對象:

T get() 返回被包含的對象,如果實例是Absent,則拋出IllegalStateException
T or(T) 返回被包含的對象,如果實例是Absent,返回參數指定的對象
T orNull() 返回被包含對象,如果實例是Absent,返回Null

 

ps, guava的optional方法已經被java8採用,用法類似。


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章