如何在无 null 设计中实现 List、Set 和 Map?

2024-05-06

当您在大多数情况下可以返回 null/空对象以避免 null 时,这很好,但是像 Collection 这样的对象呢?

在爪哇,Map回报null if key in get(key)地图上没有找到。

我能想到的最好的避免方法null在这种情况下 s 是返回一个Entry<T>对象,可以是EmptyEntry<T>,或包含值T.

当然我们会避免null,但现在如果你不检查它是否是一个类,你可能会遇到一个类转换异常EmptyEntry<T>.

有没有更好的方法避免nulls in Map's get(K)?

为了便于讨论,我们假设这种语言甚至没有null,所以不要说只使用nulls.


两种可能的解决方案:

  1. 提供 contains(key) 函数。如果为不存在的键调用 get(key) 则抛出异常。缺点是:在 contains() 之后调用 get() 会重复操作;效率不高。

  2. 函数式语言在类似情况下使用 Maybe。这篇文章解释了如何用Java实现Maybe http://dibblego.wordpress.com/2006/11/13/maybe-in-java/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在无 null 设计中实现 List、Set 和 Map? 的相关文章

随机推荐