举两个代码示例:
if(optional.isPresent()) {
//do your thing
}
if(variable != null) {
//do your thing
}
据我所知,最明显的区别是Optional需要创建一个附加对象。
但是,许多人已经开始迅速采用Optionals。使用可选与空检查相比有什么优势?
if
报表是SOOOOO过去的十年里,大家的使用单子的抽象和lambda表达式现在。
if(x.isPresent) fails_on_null(x.get)
退出类型系统时,必须保证条件和函数调用之间的距离(允许的很短)不会使代码“破脑”。在optional.ifPresent(fails_on_null)
类型系统中,这为您提供了保证,您不必担心。
Optional.ifPresent
(以及其他各种Java构造)在Java中的主要缺陷在于,您只能有效地修改最终变量,而不能引发检查异常。ifPresent
不幸的是,这是足以避免的理由。