如何在null自由设计中实现List,Set和Map?

Pyr*_*cal 3 java architecture collections null

在大多数情况下,当你可以返回null/empty对象以避免空值时,它很棒,但是像对象一样集合呢?

在Java中,如果在地图中找不到in ,则Map返回.nullkeyget(key)

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

当然我们避免使用null,但现在你可以有一个类强制转换异常,如果你不检查它是否EmptyEntry<T>.

有没有更好的办法来避免nullS IN Mapget(K)

为了论证,让我们说这种语言甚至没有null,所以不要说只是使用nulls.

Igo*_*kon 5

两种可能的解决方

  1. 提供包含(键)功能.如果为不存在的密钥调用get(key),则抛出异常.缺点是:在contains()重复操作之后调用get(); 效率不高.

  2. 功能语言在类似情况下使用Maybe.本文介绍如何在Java中实现Maybe.