我最近阅读了有关此内容的内容,并看到人们在使用此类,但在几乎所有情况下,使用效果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用作方法的返回类型,但不一定要在方法参数中使用。
添加回答
举报
0/150
提交
取消