如何在Java中处理空值(eclipse IDE)

时间:2015-09-02 04:03:01

标签: java eclipse nullpointerexception lombok

我正在使用API​​(Eclipse IDE - Kepler),JDK 1.7) 我需要一个快捷方式 @IfNotNullUpdate

考虑以下情况,例如:

Model model = new Model();
String field1 = entity.getField1() != null ? entity.getField1() : "";
model.setField1(field1);

这样我就可以像

一样编写它
model.setField1( @IfNotNullUpdate entity.getField1(),"");

我不想要任何NullPointerExceptions。这将是一个很好的帮助如果它可以像建设者模式一样工作。例如。

model.addField_25(@IfNotNullUpdate entity.getField_37())
     .addField_16(@IfNotNullUpdate entity.getField_69());

我试过lombok的@NonNull。它只是确保param不为null,这不是我的要求。

当然断言()当然不能成为解决方案。希望我能够很好地解释我的要求。

提前致谢。

3 个答案:

答案 0 :(得分:0)

为什么不使用方法?如果需要,可以将其设置为静态,以便可以通过className访问它。或者在oneClass中放置您需要的辅助方法并对其进行扩展。

public String getFieldValue(Object o ){
    if(o instanceof someEntity){
        someEntity se = (someEntity) o
        if(someEntity.getField() != null){
            return someEntity.getField();
        }else{
            return ""; 
        }
    }else if(o instanceof someOtherEntity){
       ...
    }
}

答案 1 :(得分:0)

您需要为此或任何目的构建自定义注释。您可以使用@Target(ElementType.PARAMETER)和sue反射为您创建注释,以根据需要进行映射。但这是一个漫长的过程,不需要你太多的时间。相反,只需编写一个方法然后调用它。

我无法想象一个现成的API。正如你所指出的那样,lombok并没有为你做到这一点。

答案 2 :(得分:0)

看看Optional。使用提供的示例,如果调用的任何方法返回空值,则以下内容可以抛出NPE:

String version = computer.getSoundcard().getUSB().getVersion();

为了避免这种或if (x != null)次检查,使用Optional,您可以使用:

String name = computer.flatMap(Computer::getSoundcard)
                          .flatMap(Soundcard::getUSB)
                          .map(USB::getVersion)
                          .orElse("UNKNOWN");