Jhe*_*ico 6 java mapping dozer
假设我有以下课程
public class Baz {
private List<Foo> foos = new ArrayList<Foo>();
}
public class Foo {
private String string;
}
public class Target {
private List<String> fooStrings = new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)
有没有我可以使用的映射,给定一个Baz,将它映射到目标类并获得包含在Baz中的foo中的字符串列表?以下映射不起作用
<mapping>
<class-a>Baz</class-a>
<class-b>Target</class-b>
<field>
<a>foos.string</a>
<b>fooStrings</b>
</field>
</mapping>
Run Code Online (Sandbox Code Playgroud)
因为string不是foos的属性(属于List类型).如果它遇到深度映射中的集合,并且目标也是一个集合,我可以认为Dozer会足够聪明,能够将深层属性名称分解为两个并迭代整个集合以获取子元素集合成员的深度映射.显然不是.有没有提出Dozer功能要求的解决方案?
您始终可以编写自己的CustomConverter。
Dozer 无法按照您的预期处理此问题是有道理的,因为在运行时它没有有关 的类型信息,List foos并且不能保证Object列表中的每个实际上都是Foo.