试问以下语句有问题吗?
Optional<String> stringOptional = Optional.of(stringvariable)
Yes. Optional.of方法必须传递一个非null的变量,如果不做判断传入,肯定有一天会抛出NPE(NullPointerException)。
stringOptional.of("0.0f");
试问这样stringOptional.get()是不是获取0.0f字符串了?
No. 因为Optional类像String一样都是final的,对象的生命周期其各个字段的值不能修改,因此看Optional的源码是这样子的:
public static Optionalof(Tvalue) {
return new Optional<>(value);
}
因此正确写法:
stringOptional = stringOptional.of("0.0f");
总之,对于一个新的类,新的API如果不熟悉它的内部实现,贸然使用可能造成严重BUG。