错误用法:
1、先使用isPresent来判断是否有值,然后使用get()方法取出元素。
Optional<String> optional = Optional.empty();
if (optional.isPresent()) {
String str = optional.get();
}
public boolean isPresent() {
return value != null;
}
说明:我直接用!Objects.isNull()判断下,再处理它不香吗?为什么还要用这个Optional呢?
2、使用Optional作为方法参数来使用
void badMethod(Optional<String> optional) {
...;
}
说明:每个方法都应该对参数进行合法性校验的,除非是内部使用的private方法,我们确定参数的取值情况时可以不进行校验。这个方法的参数意思就是说:我会判断是否为空的(用的错误方法1),你们放心传给我参数就好了。这不是废话?
3、使用Optional来作为类的成员属性
public class BadClass {
private Optional<String> optional;
...
}
说明: 类的成员属性,对象类型的默认值本来就是null的,你搞一个Optional来当成员属性是几个意思??难道是:“大家好!我这个类的属性是可能为null的,我考虑很周到的,我代码逼格很高的”。我表示很无语,因为真的有“前辈”这么用的!
正确用法:
定义方法的返回值的类型为Optional,因为方法的返回值可能为空,也可能有值的。根据返回值的情况,有选择性的处理相应的逻辑。这里我把“