为了账号安全,请及时绑定邮箱和手机立即绑定

番石榴的选修课有什么意义

番石榴的选修课有什么意义

POPMUISE 2019-12-21 10:58:54
我最近阅读了有关此内容的内容,并看到人们在使用此类,但在几乎所有情况下,使用效果null都很好-如果不是更直观的话。有人可以提供一个具体的示例Optional来实现哪些目标,null或者以更清洁的方式实现目标吗?我唯一能想到的就是将其与Maps不接受null键的键一起使用,但即使这样,也可以通过对值的空值进行“映射”来实现。谁能为我提供更令人信服的论点?谢谢。
查看完整描述

3 回答

?
米脂

TA贡献1836条经验 获得超3个赞

番石榴团队成员在这里。


可能的最大缺点null是,在任何给定的上下文中,它的含义都不明显:它没有说明性的名称。并非总是很明显,这null意味着“此参数无值” —哎呀,作为返回值,有时意味着“错误”,甚至是“成功”(!!),或者仅仅是“正确的答案是什么”。Optional通常是使变量可为空时实际上指的概念,但并非总是如此。如果不是这样,我们建议您编写自己的类,类似于Optional但使用不同的命名方案,以弄清楚您的实际意思。


但是我要说的最大优点Optional不是可读性:优点是其防白痴。如果您要完全编译程序,它会迫使您积极考虑不存在的情况,因为您必须主动解开Optional并解决该情况。Null使得简单地忘记事情变得异常容易,尽管FindBugs有所帮助,但我认为它几乎不能解决这个问题。当您返回可能存在或不存在的值时,这一点尤其重要。你(及其他)更可能忘记,other.method(a, b)可以返回一个null比你可能会忘记,值a可能是null当你实现other.method。归来Optional 使得调用者无法忘记这种情况,因为调用者必须自己打开对象。


由于这些原因,我们建议您将其Optional用作方法的返回类型,但不一定要在方法参数中使用。


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 367 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信