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