当 Dozer 映射 Set 时,它使用 org.dozer.util.CollectionUtils.createNewSet 创建目标 Set 实例。您会得到HashSet 或TreeSet。
如果您的元素的顺序与其自然顺序相同,您可以在目标中使用SortedSet。如果没有,那么您需要自己创建目标对象并提供所需的Set 实现。
Dozer 允许使用自定义 create methods 或自定义 bean factories 来实例化对象,而不是使用默认构造函数,因此您可以使用任一方法:
创建方法
Java 代码:
public class MyInstanceCreator {
public static DestinationObject createDestinationObject() {
DestinationObject result = new DestinationObject();
result.setCountries(new LinkedHashSet<Country>());
return result;
}
private MyInstanceCreator() { }
}
映射:
<mapping>
<class-a create-method="MyInstanceCreator.createDestinationObject">DestinationObject</class-a>
<class-b>SourceObject</class-b>
<field>
<a>countries</a>
<b>countries</b>
</field>
</mapping>
豆工厂
Java 代码:
public class MyBeanFactory implements BeanFactory {
public Object createBean(Object source, Class<?> sourceClass, String targetBeanId) {
DestinationObject result = new DestinationObject();
result.setCountries(new LinkedHashSet<Country>());
return result;
}
}
映射:
<mapping>
<class-a bean-factory="MyBeanFactory">DestinationObject</class-a>
<class-b>SourceObject</class-b>
<field>
<a>countries</a>
<b>countries</b>
</field>
</mapping>