忽略具有null

时间:2018-07-01 11:11:47

标签: java properties hashtable

我有一个接受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();

第二个选项是正确的吗?还是有一个更简单/内置的解决方案?

1 个答案:

答案 0 :(得分:1)

putIfNotNull方法是一个更好的选择,因为它明确表明如果为空,则不会放置该值。创建Properties的子类以静默拒绝put方法内的空值意味着破坏Maps的预期行为-如果put("key", value)返回而没有引发异常,则get(“ key”)应该返回相同的value