注意:Optional 是不能序列化的 不能作为一个field
6、在不打开Optional的情况下如何组合两个Optionals
建议是如果对于一些操作可能触发空指针 ,可以自己封装一个工具类 OptionalUtil
1、如何处理null
空指针的设计是Tony Hoare 于1965年设计的。
1、对null进行检查,,
这种方式特别不好,如果有引用对象的地方都要有null空指针检查
2、null带来的问题
3、其他语言如何处理null
scala Option[T]
2、引入Optional
并不是所有地方都要加Optional<>
3、Optional 方法
1、如何创建Optional 对象
1、Empty Optional
Optional<Object> empty = Optional.empty();
2、not-null from a value
Optional<Object> object = Optional.of(new Object());
3、null
Optional<Object> nullRe = Optional.of(null);
2、通过map 获得和转换Optional值
3、通过flatmap 链式操作Optional
flatmap作用和map作用类似 但是
This method is similar to {@link #map(Function)},
* but the provided mapper is one whose result is already an {@code Optional},
* and if invoked, {@code flatMap} does not wrap it with an additional
* {@code Optional}.
注意:Optional 是不能序列化的 不能作为一个field
4、用Optional 操作流
5、默认操作和打开Optional
- get
- orElse
- orElseGet
6、在不打开Optional的情况下如何组合两个Optionals
7、利用filter过滤一些操作
4、Optional 实战
1、将潜在的空指针包装成Optional
拿map来说
2、异常VS Optional
建议是如果对于一些操作可能触发空指针 ,可以自己封装一个工具类 OptionalUtil
这样可以避免大量的if else判断以及try/catch语句块看起来很臃肿
3、不推荐用基类Optionals
因为像OptionalLong 等 缺少 map 等方法