Java 8中引入的可选
类型对于很多开发人员来说是一个新鲜事物。
返回可选
类型的getter方法代替经典的foo
是一个好的实践吗?假设值可以是null
。
当然,人们会做他们想做的事。但是我们在添加这个特性时确实有一个明确的意图,它并不是一个通用的Maybe类型,就像很多人希望我们这样做那样。我们的意图是为库方法返回类型提供一种有限的机制,在这种情况下,需要一种明确的方式来表示“没有结果”,而对这种类型使用null
极有可能导致错误。
例如,您可能永远不应该将它用于返回结果数组或结果列表的东西;而是返回空数组或列表。您几乎不应该将它用作某物的字段或方法参数。
我认为常规使用它作为getter的返回值肯定会过度使用。
它没有错,它应该被避免,它只是不是很多人希望它是,因此,我们相当担心的风险,狂热的过度使用。
(公共服务公告:除非能够证明optional.get
永远不会为空,否则永远不要调用orelse
或ifpresent
这样的安全方法。回想起来,我们应该将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现在支持可