[关闭]
@File 2019-10-09T03:49:10.000000Z 字数 1123 阅读 153

Optional NPE空指针异常处理类

java


相关连接

参考文档

一、 获取 Optional 对象

1. Optional.empty() 一个空的 Optional 实例

  1. Optional<Object> optional = Optional.empty();

2. Optional.of() 一个值不为 null 的 Optional 实例

  1. // .of(null会报错)
  2. Optional<String> optional = Optional.of(string);

3. Optional.ofNullable() 一个值可以 null 的 Optional 实例

  1. // .ofNullable(可以为null)
  2. Optional<Integer> empty = Optional.ofNullable(number);

二、 对象方法

1. isPresent 是否有值

  1. if(optional.isPresent()){
  2. // 值不为 null 时执行的内容
  3. }

2. ifPresent 如果存在值就调用回调

  1. optional.ifPresent(u -> {
  2. // 值不为 null 时执行的内容
  3. // u Optional创建时存入的值或对象
  4. });

3. get 取值

  1. // null会报错
  2. optional.get();

4. orElse 取值并设置备选值

  1. // get 的增强版
  2. optional.orElse("else value!");

5. orElseGet 取值并设置备选方案

  1. // orElse 的增强版
  2. optional.orElseGet(() -> "else value!");

6. orElseThrow 取值并设置异常方案

  1. // 把空指针异常修改成运行时异常
  2. optional.orElseThrow(() -> new RuntimeException());

7. map 值修改方案

  1. // 原始对象
  2. User user = new User("李大爷",18);
  3. // 创建 Optional 对象
  4. Optional<User> optional = Optional.of(user);
  5. // Optional 中的对象修改为对象中的 age 属性值
  6. Optional<Integer> integer = empty.map(u -> u.getAge());
  7. // 取值
  8. integer.orElse(0);

8. flatMap 值修改方案,返回回调结果

9. filter 过滤

  1. // .filter(过滤条件),回调 false 时返回 Optional.empty
  2. // 检查 Optional 中的对象的 age 属性值
  3. optional.filter(u -> u.getAge != 0);

10. or 取值并设置备选方案,返回回调结果

11. ifPresentOrElse 值存在和不存在分别调用不同的回调

12. stream 吧 Optional 转换为流对象

三、 使用案例

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注