我正在编写一个传输对象,它只是将从Web服务返回的对象映射到我自己的对象:Car A到Car B.
汽车级有里程属性。
CarB.setMileage(CarA.getMileage()); //if the CarA.getMileage() is null, then my setter fails and I get a nullPointerException
我有50个字段,我是否正确,我需要在设置字段之前为空写入50个单独的检查?
即,
if (CarA.getMileage() != null) {
CarB.setMileage(CarA.getMileage());
}
有没有办法避免编写50个单独的if !=null
检查语句?
答案 0 :(得分:2)
尝试使用Dozer映射。它是一个很好的工具,它也可以帮助忽略空值。它可用于以编程方式和使用XML映射两个对象。如果对象中的属性名称相同,则不要在两个对象字段之间指定任何映射。以下是链接:
答案 1 :(得分:1)
您可以在CarB
:
// carA is of type CarA returned by the web service
CarB carB = CarB.fromCarA(carA);
然后将在该工厂方法中完成所有空检查等。示例代码:
public class CarB
{
//....
public static CarB fromCarA(final CarA carA)
{
if (carA == null)
throw new NullPointerException("Where is my car???");
final CarB ret = new CarB();
// Supposing CarA returns an Integer...
final Integer mileage = carA.getMileage();
if (mileage != null)
ret.setMileage(mileage);
// etc etc, then
return ret;
}
// etc
}
答案 2 :(得分:1)
很少见,但更好的方法是在您的bean [{1}}
中使用常见的method
Class
然后
function String checkForNull(String str){
//check for null and return corresponding
}