【发布时间】:2015-02-15 01:01:33
【问题描述】:
有人要求我更喜欢使用 Optional 类来避免空指针异常,但我不确定它会如何显着帮助,因为无论如何我们仍然必须应用检查 optional.isPresent() 以避免像空检查一样出现异常。
除非我们使用optional.or() 来覆盖一些默认值或大多数时候使用空对象,否则我认为它不是很有用。
还有其他我想看的好处吗,否则可以很容易地避免这种情况而不会产生任何额外的开销?
【问题讨论】:
-
通过从您的方法返回可选,您强制您的客户端执行显式检查。
-
但是我仍然可以调用 optional.get() 而不进行检查,它会抛出 IllegalStateException 而不是 NullPointerException!
-
但是你必须打电话给
get这一事实提醒你应该检查isPresent。如果没有Optional,您更有可能只是假设一切都很好,而实际上可能并非如此。