在java中从一个对象映射到另一个对象(传输对象)时忽略空字段?

时间:2013-06-03 17:32:58

标签: java if-statement nullpointerexception

我正在编写一个传输对象,它只是将从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检查语句?

3 个答案:

答案 0 :(得分:2)

尝试使用Dozer映射。它是一个很好的工具,它也可以帮助忽略空值。它可用于以编程方式和使用XML映射两个对象。如果对象中的属性名称相同,则不要在两个对象字段之间指定任何映射。以下是链接:

http://dozer.sourceforge.net/documentation/faq.html

答案 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 }