轉自:
http://www.java265.com/JavaCourse/202206/3817.html
下文筆者講述jdk8中Optional關鍵字的功能簡介說明,如下所示:
Optional關鍵字的功能
Optional類的功能:
1.用于處理空指標例外(NullPointerException)的問題
2.Optional是一個包裝類,它可包裝的物件可以是空,也可以是一個存在的物件
例: 常見的空指標例外判斷示例
String pId = user.getInfo().getId().toLowerCase();
//為了不產生空指標例外,我們需做以下的判斷
if (user != null) {
Info info = user.getInfo();
if (info != null) {
Id pid = info.getId();
if (pid != null) {
pid = pid.toLowerCase();
}
}
}
那么,我們發現以上的代碼非常的冗余,此時我們就可以使用Optional進行改寫,例
String pId = Optional.ofNullable(user)
.flatMap(u -> u.getInfo())
.flatMap(a -> a.getId())
.map(c -> c.toLowerCase())
.orElse("default");
從以上Optional改寫上,我們可以看出Optional寫出的代碼,非常的優雅
那么Optional到底如何使用呢?下文筆者將一一道來,如下所示
創建Optional實體
Optional<User> emptyOpt = Optional.empty(); 以上將創建一個null optional物件示例
使用of()和ofNullable()方法創建Optional
注意事項: of()方法,當傳入一個null值時,則會包NPE(NullPointerException)例外
例:
//使用of方法創建的物件,可能報NPE例外 Optional<User> opt = Optional.of(user); //此時我們需采用 ofNullable()方法創建Optional物件 //才能避免報例外 Optional<User> opt = Optional.ofNullable(user);
訪問Optional物件的值
String name = "java265.com";
Optional<String> opt = Optional.ofNullable(name);
assertEquals("java265.com", opt.get());
注意事項:
以上的get方法,也可能報NPE例外,此時我們需使用isPresent()進行相應的判斷
User user = new User("java265.com", "8888");
Optional<User> opt = Optional.ofNullable(user);
assertTrue(opt.isPresent());
assertEquals(user.getName(), opt.get().getName());
optional回傳默認值
Optional類回傳默認值,可使用orElse()方法或orElseGet方法 此方法的功能為當Optional為null時,回傳默認值
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/498491.html
標籤:Java
上一篇:System.currentTimeMillis() 和 System.nanoTime() 哪個更快?別用錯了!
下一篇:學習nginx,這一篇就夠了
