有没有办法阻止树形图接受空值,还是每次输入内容时都需要检查?
答案 0 :(得分: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。
请注意,不正确返回null
而不是抛出异常。 java.util.Map
API指出put
操作的结果是k
映射的先前值,如果之前未映射null
,则k
。
答案 1 :(得分:4)
编写一个包含真实Set的委托Set,并为Set.add()添加一个保护。
如果您向TreeSet提供比较器,如果比较器的两个输入中的任何一个为空,您也可以抱怨。