Optional工具類產生的意義
java代碼中最常見的異常就是空指針異常NullPointException,爲了防止空指針異常的出現,
會在代碼裏面做大量的判空處理,這樣寫出來的代碼會顯得很醜。java8提供Optional工具類,可以解決判空的問題,同時還還能讓代碼顯得優雅。
Optional工具類,在我看來就是一個單元素的容器,泛型化處理,內部封裝了一些方法,可以讓你自己決定空處理流程,同時還避免了大量醜陋代碼的編寫,good!
Optional工具類的簡單用法
public class MyOptional {
@Test
public void test1() {
Optional<String> name = Optional.ofNullable(null);
System.out.println("name is present:" + name.isPresent()); //name is present:false
//System.out.println("name value:" + name.get()); throw Exception
System.out.println("name value:" + name.orElse("none")); //name value:none
System.out.println("name value:" + name.orElseGet(() -> "none")); //name value:none
System.out.println(name.map((s) -> s + " hello! ").orElse("none hello!")); //none hello!
}
@Test
public void test2() {
Optional<String> name = Optional.ofNullable("cy");
System.out.println("name is present:" + name.isPresent()); //name is present:true
//System.out.println("name value:" + name.get()); throw Exception
System.out.println("name value:" + name.orElse("none")); //name value:cy
System.out.println("name value:" + name.orElseGet(() -> "none")); //name value:cy
System.out.println(name.map((s) -> s + " hello! ").orElse("none hello!")); //cy hello!
}
}