Java8的Optional是不是鸡肋? - 知乎

Java8的Optional是不是鸡肋?

不是。

Java8不强迫使用Optional的人如何使用它,Optional容易被误用,甚至有时候并没有比抛出NullpointerException好多少。

使用Java语言做研发要遵循3个原则:

1、本不应该出现的错误或者不应该继续执行的地方直接抛异常。

2、重要的逻辑,要记录详细的错误信息。

3、检查参数合法性,而不是让错误发生。

不论是大型网站、第三方服务、网络游戏、数据中台、大数据应用等等,NullPointerException都是潜在的危险。

我专门写过一篇文章,关于Java8的Optional的意义和不足之处,

Johny:Java8与游戏开发(六)​zhuanlan.zhihu.com图标

Option类的设计是十分必要的,提前处理可能发生的错误,而不是等到逻辑处理完了再报告错误。

如果返回的null不会终止代码逻辑的运行,比如Java的Map的get方法传了错误类型的key返回null,那么开发者可能会花大量的时间去定位错误的原因,尤其是对于那些庞大的系统来说,无疑是大海捞针。

很多时候,程序员都是不判空的,这些BUG就像定时炸弹一样,使用Option类等于强迫程序员做好判空处理,减少可能的损失。

Scala、lisp、hashshell、erlang等函数式编程语言无一例外地,都对NullPointerException进行了处理,都有Optional的概念,Java8是借鉴了他们。


Original url: Access
Created at: 2020-08-27 14:42:46
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论