如何在Java中优雅地处理空值

这个问题在这里已经有了答案:

  • 避免!= null语句58个答案

  • Apache commons-lang3提供了这个功能:

    b.setC(ObjectUtils.defaultIfNull(a.getC(), b.getC()));
    

    但我不得不承认,我不确定这是否会有所改善。


    你可以使用var args来检查你的if语句的所有参数:

    public boolean argsNotNull(Object ... objs) {
        boolean b = true;
        for(Object o : objs) {
            if(o == null) {
                b = false;
                break;
            }
        }
        return b;
    }
    

    然后像这样使用它:

    if(argsNotNull(a)) {
        Object c = a.getC();
        if(argsNotNull(b, c)) { // A null 'c' object may be valid here, depends on your logic
            b.setC(c);
        }
    }
    

    由于此方法使用var args,因此可以根据需要为其提供尽可能多的参数,但它不适用于处于当前状态的基元。


    bC值是否应该完全反映aC中的内容 ? 在那种情况下,如果aC为null,那么bC应该为空,并且你并不需要一个空检查。

    否则,为了避免使用大括号,你可以这样做:

    b.setC((a.getC() == null) ? b.getC() : a.getC());
    

    这假定来自b的吸气和吸气器完全匹配。 如果来自a的C为null,则getC()中setC()实际上什么都不做。

    链接地址: http://www.djcxy.com/p/13305.html

    上一篇: how to handle nulls gracefully in Java

    下一篇: Optimistic way of checking null references in java