栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java Uses for Optional

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java Uses for Optional

主要目的

Optional
是为函数提供一种返回值的手段,以指示不存在返回值。看到这个讨论。这使调用者可以继续进行一系列流畅的方法调用。

这与OP问题中的用例#1最接近。虽然,缺少值比空值更为精确,因为类似这样的

IntStream.findFirst
值永远不会返回空值。

对于用例2,将可选参数传递给方法,可以使之起作用,但这相当笨拙。假设你有一个方法,该方法接受一个字符串,然后是一个可选的第二个字符串。接受Optionalas作为第二个arg将导致如下代码:

foo("bar", Optional.of("baz"));foo("bar", Optional.empty());

甚至接受null也会更好:

foo("bar", "baz");foo("bar", null);

最好的办法是让一个重载方法接受单个字符串参数并为第二个参数提供默认值:

foo("bar", "baz");foo("bar");

这确实有局限性,但是比以上任何一种都好。

在类字段或数据结构中具有的用例#3和#4Optional被视为对API的滥用。首先,它违反Optional了顶部所述的主要设计目标。其次,它不会增加任何价值。

可以使用三种方法来处理缺少值的情况Optional:提供替代值,调用函数以提供替代值或引发异常。如果要存储到字段中,则可以在初始化或分配时执行此操作。如果要将值添加到列表中(如OP所述),则可以选择不添加值,从而“拉平”缺少的值。

我确信有人会提出一些他们确实想Optional在字段或集合中存储的人为设计的案例,但是总的来说,最好避免这样做。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381471.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号