java - 如何用Dozer实例化子类?

标签 java dozer

我有以下目标类(class):

public class Person {
    private String firstName;
    private String lastName;
    ...
}

public class Employee extends Person {
    private String postion;
    ...
}

public class PersonContainer {
   private Person person;
   ...
}

这是我的来源:

public class Form {
    private String firstNameEmployee;
    private String lastNameEmployee;
    private String positionEmployee;
    ...
}


目标

我想获取对象PersonContainer,但不是使用Person对象,而是使用Employee对象。我真的不知道如何实现这一目标。如何告诉Dozer实例化一个子类?

此映射给出了Person对象:

 <mapping>
    <class-a>hl.test.dozer03.form.Form</class-a>
    <class-b>hl.test.dozer03.result.PersonContainer</class-b>


    <field>
        <a>firstNameEmployee</a>
        <b>person.firstName</b>
    </field>

    <field>
        <a>lastNameEmployee</a>
        <b>person.lastName</b>
    </field>

 </mapping>


可以通过稍微修改这个映射来完成吗?

最佳答案

您需要使用自定义createMethod。 http://dozer.sourceforge.net/documentation/customCreateMethod.html

类似这样的事情:

<mapping>
  <class-a>hl.test.dozer03.form.Form</class-a>
  <class-b create- method="PersonContainerFactory.createPersonContainer">hl.test.dozer03.result.PersonContainer</class-b>


  <field>
    <a>firstNameEmployee</a>
    <b>person.firstName</b>
  </field>

  <field>
    <a>lastNameEmployee</a>
    <b>person.lastName</b>
  </field>

</mapping>

使用 java 类:

public class PersonContainerFactory {

  public static PersonContainer createPersonContainer(){
      PersonContainer cont = new PersonContainer();
      cont.setPerson(new Employee());
      return classA;
  }
}

关于java - 如何用Dozer实例化子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21418928/

相关文章:

java - 提高Java中定时器的速度

java - ArrayAdapter 未更新

java - 一个与Spring boot devtools相关的dozer map异常

java - 使用 Mockito 注入(inject) DozerBeanMapper

java - 推土机引用复制不起作用

java - 为什么我的 java hibernate 应用程序不工作?

java - 在某些 <div> 中显示 Servlet 响应

java - Stripe 订阅创建没有附加付款来源

java - 来自多个包的推土机通用映射(通配符?)

java - Dozer 映射 HashMap<Key,Value> 到 List<Value>