@File
2019-10-09T03:49:10.000000Z
字数 1123
阅读 153
java
Optional.empty()
一个空的 Optional 实例
Optional<Object> optional = Optional.empty();
Optional.of()
一个值不为 null 的 Optional 实例
// .of(null会报错)
Optional<String> optional = Optional.of(string);
Optional.ofNullable()
一个值可以 null 的 Optional 实例
// .ofNullable(可以为null)
Optional<Integer> empty = Optional.ofNullable(number);
isPresent
是否有值
if(optional.isPresent()){
// 值不为 null 时执行的内容
}
ifPresent
如果存在值就调用回调
optional.ifPresent(u -> {
// 值不为 null 时执行的内容
// u Optional创建时存入的值或对象
});
get
取值
// null会报错
optional.get();
orElse
取值并设置备选值
// get 的增强版
optional.orElse("else value!");
orElseGet
取值并设置备选方案
// orElse 的增强版
optional.orElseGet(() -> "else value!");
orElseThrow
取值并设置异常方案
// 把空指针异常修改成运行时异常
optional.orElseThrow(() -> new RuntimeException());
map
值修改方案
// 原始对象
User user = new User("李大爷",18);
// 创建 Optional 对象
Optional<User> optional = Optional.of(user);
// Optional 中的对象修改为对象中的 age 属性值
Optional<Integer> integer = empty.map(u -> u.getAge());
// 取值
integer.orElse(0);
flatMap
值修改方案,返回回调结果filter
过滤
// .filter(过滤条件),回调 false 时返回 Optional.empty
// 检查 Optional 中的对象的 age 属性值
optional.filter(u -> u.getAge != 0);
or
取值并设置备选方案,返回回调结果ifPresentOrElse
值存在和不存在分别调用不同的回调stream
吧 Optional 转换为流对象