Guava學習(一):Optional
Optional對象中的主要方法如下:
例子:
package com.bluedragon.guavalearning.optional;
import com.google.common.base.Optional;
/**
* @author CodeRush
* @date 2019/7/27 20:39
*/
public class OptionalTest {
public static void main(String[] args) {
//Optional.of(T) ) 創建指定引用的Optional實例, 若引用爲null則快速失敗 optional:可選的
Optional<Integer> possible = Optional.of(5);
//present:存在
System.out.println(possible.isPresent()); //true
//返回Optional所包含的引用, 若引用缺失, 則拋出java.lang.IllegalStateException
System.out.println(possible.get()); //5
//含有默認值的返回,如果爲null返回or中的值,否則直接返回引用值
System.out.println(possible.or(1)); //5
//Set<T> asSet()) 返回Optional所包含引用的單例不可變集, 如果引用存在, 返回一個只有單一元素的集合,
// 如果引用缺失, 返回一個空集合。
System.out.println(possible.asSet()); //[5]
try {
Optional<Object> nullOptionalOf = Optional.of(null); //of接收到null會快速失敗
} catch (Exception e) {
System.out.println("引用爲null則快速失敗,Optional.of快速失敗率,不會創建成功");
e.printStackTrace();
}
//Optional.absent()) 創建引用缺失的Optional實例 absent:不存在
Optional<Object> nullOptional = Optional.absent();
System.out.println(nullOptional.isPresent()); //false
System.out.println(nullOptional.or("值爲null")); //值爲null
System.out.println(nullOptional.orNull());//null
System.out.println(nullOptional.asSet()); //[]
//Optional.fromNullable(T)) 創建指定引用的Optional實例, 若引用爲null則表示缺失
Optional<Object> nullableOptional = Optional.fromNullable(null); //從允許null的對象生成
try {
System.out.println(nullableOptional.get()); //爲null的話get方法就會拋出異常,可以使用orNull或者or(null)
} catch (Exception e) {
System.out.println("get到null值拋出異常");
e.printStackTrace();
}
}
}
到了java8的時候,jdk中已經將Optional集成進來了,使用方法基本都類似,所以使用java8的話,可以不用guava的Optional了,後面要說的Ordering也一樣