Java8 Optional
2025-04-16 16:32:33
# java
按照字面意思的理解,应该可选的意思。一开始我还以为是类似python里面的默认参数用法呢,结果语义是指某个值可能有也可能没有(null)。
感觉名字取得不是很直观。。我觉得叫Nullable不是更好?
python:
1 | def fn(a='default_value'): |
Optional方法
Optional没有公开的构造方法,只有静态工厂方法:
1 | Optional<String> optional_2 = Optional.of(str); // 如果str == null,抛出错误NullPointerException |
Optional的好处
显式的提醒你需要关注null的情况,对程序员是一种字面上的约束
将平时的一些显式的防御性检测给标准化了,并提供一些可串联操作
解决一下null会导致疑惑的概念,比如Map里面的key==null的情况,以及value==null的情况
小节
不过Optional一下子有这么多方法,Optional的初衷是什么?而且Optional也是一个对象,所以它本身也有可能是null,这可如何是好。
所以,有个观点认为,Optional比较适用的地方是作为返回值,这样可以给使用者一个善意的提醒。