Java 8 Optional使用上的坑

试问以下语句有问题吗? 

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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容