我有一个接受java.util.Properties
参数
我需要放置各种参数,其值可以为null。
由于Hashtable.put无法收到空值,我得到了NullPointerException
java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:460)
...
我可以使用检查null的方法来修复它:
private void putIfNotNull(Properties p, String name, String value) {
if (value!= null) {
p.put(name, value);
}
}
或创建一个包装器类并使用它:
public class PropertyHolder extends Properties {
@Override
public Object put( Object key, Object value ) {
if (value != null) {
return super.put(key, value);
}
return null;
}
并使用它类似于“属性”:
Properties p = new PropertyHolder();
第二个选项是正确的吗?还是有一个更简单/内置的解决方案?
答案 0 :(得分:1)
putIfNotNull
方法是一个更好的选择,因为它明确表明如果为空,则不会放置该值。创建Properties
的子类以静默拒绝put
方法内的空值意味着破坏Maps的预期行为-如果put("key", value)
返回而没有引发异常,则get(“ key”)应该返回相同的value
。