当前位置: 首页 > 知识库问答 >
问题:

Java 8 getters应该返回可选类型吗?

房泉
2023-03-14

Java 8中引入的可选类型对于很多开发人员来说是一个新鲜事物。

返回可选 类型的getter方法代替经典的foo是一个好的实践吗?假设值可以是null

共有1个答案

卓胜
2023-03-14

当然,人们会做他们想做的事。但是我们在添加这个特性时确实有一个明确的意图,它并不是一个通用的Maybe类型,就像很多人希望我们这样做那样。我们的意图是为库方法返回类型提供一种有限的机制,在这种情况下,需要一种明确的方式来表示“没有结果”,而对这种类型使用null极有可能导致错误。

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

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

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

(公共服务公告:除非能够证明optional.get永远不会为空,否则永远不要调用orelseifpresent这样的安全方法。回想起来,我们应该将get称为get之类的东西,或者更清楚地表明这是一种高度危险的方法,它首先破坏了optional的整个目的。吸取了教训。(更新:Java 10号有optional.orelsethrownosuchelementexception,语义上等同于get(),但

 类似资料:
  • 问题内容: 中引入的type对许多开发人员来说都是新事物。 用方法返回类型代替经典方法是一种好习惯吗?假设值可以是。 问题答案: 当然,人们会做他们想要的。但是添加此功能时我们确实有明确的意图,并且它并不是通用的Maybe类型,因为许多人希望我们这样做。我们的意图是为库方法返回类型提供一种有限的机制,其中需要一种明确的方法来表示“无结果”,并且使用这种方法极有可能导致错误。 例如,你可能永远不要将

  • 我看过返回IList vs ICollection vs Collection以及它链接的其他问题,但我仍然对这个问题感到困惑。 出于演示目的,我们假设我有一个类,在其中公开了一个公共方法,如下所示: 要遵循CA1002,我的方法应该返回实际的集合类(、等)或它们的接口(、等),如果我希望返回具体?

  • 本文向大家介绍SpringMVC Controller 返回值的可选类型详解,包括了SpringMVC Controller 返回值的可选类型详解的使用技巧和注意事项,需要的朋友参考一下 spring mvc 支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void。 ModelAndView 通过ModelAndView构造方

  • 考虑以下代码: Typescript引发错误:。 但是如果我正在进行基于浏览器的开发,使用感觉是错误的。哪个是正确的类型定义或返回类型,可以让在不求助于声明的情况下工作?

  • 是否有任何方法可以从NamedParameterJdbcTemplate返回可选的? 我的查询有时会返回空。所以我想要漂亮的方法来检查空。我不想做尝试捕捉空结果数据访问异常,因为这个有点丑。

  • 问题内容: PHP 7引入了返回类型声明。这意味着我现在可以指示返回值是某个类,接口,数组,可调用或新暗示的标量类型之一,对于函数参数而言,这是可能的。 通常,值并不总是存在,并且您可能返回某种类型的值或null。尽管可以通过将参数的默认值设置为null()来使参数为可空,但似乎没有办法对返回类型执行此操作。的确是这样,还是我不知如何找到方法呢?这些不起作用: 问题答案: PHP 7.1现在支持可