Optional類的作用
java.util.Optional類是一個包含null值的容器對象,可以代替xx!=null使用。更加優(yōu)雅的進(jìn)行判空處理。-
常用方法
2.1 of
為value創(chuàng)建一個Optional對象,如果value為null,會報出NullOpinterException異常。
of.png2.2 ofNullable
為value創(chuàng)建一個Optional對象,允許為null。
ofNullable.png2.3 isPresent
判斷當(dāng)前value是否為null,如果不為null則返回true,否則返回false。
isPresent.png2.4 ifPersent
如果不為null就執(zhí)行函數(shù)接口中的內(nèi)容。
ifPersent.png2.5 get
返回當(dāng)前值,如果為null則報異常
get.png
2.6 orElse
返回當(dāng)前值,如果為null則報異常
orElse.png
2.7 orElseGet
和OrElse類型,只是orGetElse支持函數(shù)式接口來生成other值
orElseGet.png2.8 orElseThrow
如果有值則返回,沒有值用函數(shù)是接口拋出生成的異常
orElseThrow.png2.9 empty
創(chuàng)建一個空的Optional對象,沒有任何參數(shù)賦值;
empty.png 使用示例
Optional<Object> optionalEmpty = Optional.empty(); // 創(chuàng)建一個空的Optional類
String str = "Hello World";
Optional<String> optionalStr = Optional.of(str); // str不能為空
Optional<String> optionalStr = Optional.ofNullable(str); // str可以為空
boolean present = Optional.ofNullable(null).isPresent(); // present為false
Optional.ofNullable("hello").ifPresent(System.out::println); // 輸出hello
Optional.ofNullable(null).ifPresent(System.out::println); // 什么也不輸出
String str = Optional.ofNullable("hello").get(); // str為hello
Object o = Optional.ofNullable(null).get(); // 拋出異常:java.util.NoSuchElementException: No value present
String s1 = Optional.ofNullable("hello").orElse("string is null"); // s1為hello
Object s2 = Optional.ofNullable(null).orElse("string is null"); // s2為string is null
// 假設(shè)有一個User自定義類型:
User user = null;
User ansUser = Optional.ofNullable(user).orElse(new User("張三", 11, "男", 1234)); // 輸出為new User("張三", 11, "男", 1234)對象
String s1 = Optional.ofNullable("hello").orElse("string is null"); // s1為hello
Object s2 = Optional.ofNullable(null).orElse("string is null"); // s2為string is null
// 假設(shè)有一個User自定義類型:
User user = null;
User ansUser = Optional.ofNullable(user).orElse(new User("張三", 11, "男", 1234)); // 輸出為new User("張三", 11, "男", 1234)對象
String str = Optional.ofNullable("hello").orElseGet(() -> "test"); // str為hello
String s = null;
String str = Optional.ofNullable(s).orElseThrow(RuntimeException::new); // 拋出異常:java.lang.RuntimeException








