繁体   English   中英

忽略带有 null 的属性(哈希表)值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM