小编典典

Java 8 getter 是否应该返回可选类型?

all

OptionalJava 8 中引入的类型对于许多开发人员来说是一个新事物。

Optional<Foo>代替经典的getter方法返回类型是Foo一种好习惯吗?假设值可以是null


阅读 86

收藏
2022-04-06

共1个答案

小编典典

当然,人们会为所欲为。但我们在添加此功能时确实有明确的意图,它 不是 通用的 Maybe
类型,就像很多人希望我们这样做一样。我们的目的是为库方法返回类型提供一种有限的机制,其中需要一种明确的方式来表示“无结果”,而使用null这种方式极有可能导致错误。

例如,您可能永远不应该将它用于返回结果数组或结果列表的东西;而是返回一个空数组或列表。您几乎不应该将它用作某物的字段或方法参数。

我认为经常使用它作为 getter 的返回值肯定会被过度使用。

Optional 应该避免它并没有 ,它只是不是很多人希望的那样,因此我们相当担心过度使用的风险。

(公共服务公告: 永远不要 调用,除非你能证明Optional.get它永远不会为空;而是使用一种安全方法,例如orElseor这首先破坏了
的整个目的。吸取的教训。(更新:Java 10
具有,在语义上等同于,但其名称更合适。))ifPresent``get``getOrElseThrowNoSuchElementException``Optional``Optional.orElseThrow()``get()

2022-04-06