4

有没有办法阻止树形图接受空值,或者我每次输入内容时都需要进行检查?

4

2 回答 2

10
public class NonNullTreeMap<K,V> extends TreeMap<K,V> {
    @Override
    public V put(K k, V v) {
         if (v == null) {
             throw new NullPointerException("value is null");
         }
         return super.put(k,v);
    }
}

您也可以抛出 IllegalArgumentException,但 NullPointerException 是最合适的 IMO。

请注意,返回而不是抛出异常是不正确的。API 声明操作的结果null是映射的先前值,或者如果先前未映射。 java.util.Mapputknullk

于 2009-10-11T02:42:30.173 回答
4

编写一个包装真实 Set 的委托 Set,并为 Set.add() 添加一个守卫。

如果您要为 TreeSet 提供比较器,您也可以抱怨比较器的两个输入中的任何一个为空。

于 2009-10-11T01:59:32.443 回答