当您在大多数情况下可以返回 null/空对象以避免 null 时,这很好,但是像 Collection 这样的对象呢?
在爪哇,Map
回报null
if key
in get(key)
地图上没有找到。
我能想到的最好的避免方法null
在这种情况下 s 是返回一个Entry<T>
对象,可以是EmptyEntry<T>
,或包含值T
.
当然我们会避免null
,但现在如果你不检查它是否是一个类,你可能会遇到一个类转换异常EmptyEntry<T>
.
有没有更好的方法避免null
s in Map
's get(K)
?
为了便于讨论,我们假设这种语言甚至没有null
,所以不要说只使用nulls
.
两种可能的解决方案:
提供 contains(key) 函数。如果为不存在的键调用 get(key) 则抛出异常。缺点是:在 contains() 之后调用 get() 会重复操作;效率不高。
函数式语言在类似情况下使用 Maybe。这篇文章解释了如何用Java实现Maybe http://dibblego.wordpress.com/2006/11/13/maybe-in-java/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)