java - Dozer - 空对象而不是 null

标签 java dozer sourceforge

在 dozer 中,我如何将值全局初始化为空对象而不是 null

例如:

Class Person
{
public Address address;
//getters and setters for address

}

Class Address
{
String addressField1;
String addressField2;
}

同样,我有对象 PersonVO 和 AddressVO,它们类似于 Person 和 Address

在使用推土机映射值后,如果 Person 对象中的地址值为 null,则 personvo.getAddressVO.getAddressField1() 中的结果将抛出 空指针异常 ,有什么办法可以避免这种情况吗?

如果我使用自定义转换器,那么我最终会采用典型的方式在自定义转换器中设置值,并且会破坏使用推土机的目的。

最佳答案

在 Dozer 中有一种方法可以初始化目标对象。

  1. 为目标对象定义一个工厂类。
  2. 将目标对象的创建方法指定为上述工厂类中的方法。

以你的例子为例,我假设你想将 Person 映射到 PersonVO,将 Address 映射到 AddressVO。

为PersonVO创建一个工厂类

public abstract class PersonVOFactory {
    private PersonVOFactory() {
    }
    public static PersonVO createPersonVO() {
        PersonVO personVO = new PersonVO();
        personVO.setAddressVO(new AddressVO());
        return personVO;
    }
}

为 Person 到 PersonVO 映射指定上述创建方法。

<mapping map-id="person-mapping">
    <class-a>Person</class-a>
    <class-b create-method="PersonVOFactory.createPersonVO">PersonVO</class-b>
    <field>
        <a>address.addressField1</a>
        <b>addressVO.addressField1</b>
    </field>
    <field>
        <a>address.addressField2</a>
        <b>addressVO.addressField2</b>
    </field>
</mapping>

现在声明 personvo.getAddressVO.getAddressField1() 不会抛出 NPE。

关于java - Dozer - 空对象而不是 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11188472/

相关文章:

javascript - 如何在 SourceForge.NET 上将 JavaScript 作为服务器端脚本语言运行?

java - 映射 Avro 模型

java - Dozer InstantiationException 映射 Calendar 类

java - 每个请求的线程 tcp 服务器

java - 当套接字被接受时,我怎样才能关闭这个对话框?

Dozer 文件未找到异常

qt - 如何使用 Qt 从 SourceForge 下载文件

c# - 如何获取 SMPP 消息发送确认

java - 如何设置带条件的导航 View ?

java - Java中以下两种方法有什么区别