Optional可以處理我們遇到的空指針
Optional
of(Tvalue)接受一個對象,如果是null會拋出一個異常
1 User user=null;
2 System.out.println( Optional.of(user));
ofNullable(T value)接受一個可能為null的值 返回一個ofNullable()
1 User user=null;
2 System.out.println(Optional.ofNullable(user));
3 >>輸出
4 Optional.empty
empty();
orElse() 和 orElseGet()
無論傳入user是否為空 orelse都會執行
orElseGet方法只有user為null時才會執行
orElseThrow 處理異常異常
1 User user=null;
2 System.out.println(Optional.ofNullable(user).orElse(newUser(2,"password","userName")))
3
4 User user=null;
5 System.out.println(Optional.ofNullable(user).orElseGet(()‐>new User(2,"password","userName")));
6 User user=null;
7 System.out.println(Optional.ofNullable(user).orElseThrow(()‐> {throw new IllegalStateException();} ));
map()
1 User user=new User(2,"password","userName");
2
3 System.out.println(Optional.ofNullable(user).map(User::getUserName).get());
4 >>userName
flatMap
1 User user=new User(2,"password","userName");
2
3 System.out.println(Optional.ofNullable(user).flatMap(User::getOptionalName).get());
4
5 /***
6 ** 返回optional對象
7 */
8 public Optional<string> getOptionalName(){/<string>
9 return Optional.ofNullable(userName);
10 }
isPresent()和ifPresent(Consumer super T> consumer)
true 如果不是一個null對象 false 是null
1 Optional<user> optionalUser = Optional.ofNullable(null);/<user>
2 if (optionalUser.isPresent()){
3 System.out.println("not Null");
4 }
5 else {
6 System.out.println("null");
閱讀更多 編程的boy 的文章