[英]Ignore properties(Hashtable) value with null
我有一个接受java.util.Properties
参数的方法,
我需要放置各种参数,它的值可以为空。
由于Hashtable.put无法接收空值,我收到NullPointerException
java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:460)
...
我可以通过使用检查空值的方法来修复它:
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();
第二个选项是正确的吗? 还是有更简单/内置的解决方案?
putIfNotNull
方法是一个更好的选择,因为它明确表明如果值为 null,它将不会放置该值。 创建一个在put
方法中静默拒绝 null 值的Properties
子类意味着破坏 Maps 的预期行为 - 如果put("key", value)
返回时没有抛出异常,那么 get("key") 应该返回相同的value
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.