stream 操作

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");


分享到:


相關文章: