我正在使用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,这不是我的要求。
当然断言()当然不能成为解决方案。希望我能够很好地解释我的要求。
提前致谢。
答案 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");