Mapping 如何在CustomeConverter中调用推土机转换?

Mapping 如何在CustomeConverter中调用推土机转换?,mapping,dozer,Mapping,Dozer,假设我有一门课: class CollectionWrapper { private List<Address> addresses; public List<Address> getAddresses() { if (addresses == null) { addresses = new ArrayList<Address>(); } return addresses

假设我有一门课:

class CollectionWrapper {
    private List<Address> addresses;

    public List<Address> getAddresses() {
        if (addresses == null) {
            addresses = new ArrayList<Address>();
        }
        return addresses;
    }
}

class SourceClass {
    private CollectionWrapper collectionWrapper;
    //getters and setters are omited
}

class DestinationClass {
    private List<AddressDto> addresses;
    //getters and setters are omited
}

class Address {
    String street;
    Integer number;
}

class AddressDto {
    String street;
    Integer number;
}
类集合包装器{
私人名单地址;
公共列表getAddresses(){
如果(地址==null){
地址=新的ArrayList();
}
返回地址;
}
}
类源类{
私有集合包装器集合包装器;
//省略了getter和setter
}
类目的类{
私人名单地址;
//省略了getter和setter
}
班级地址{
弦街;;
整数;
}
类地址到{
弦街;;
整数;
}
显然,下面的代码是不正确的:

class MyCustomeConverter extends DozerConverter<CollectionWrapper, List<AddressDto>> {
    List<AddressDto> convertTo (CollectionWrapper source, List<AddressDto> destination) {
        List<AddressDto> result = new ArrayList<AddressDto>();
        Mapper mapper = new DozerBeanMapper();//INCORRECT !!!!
        for (Address address : source.getAddresses()) {
            result.add(mapper.map(address, AddressDto.class));
        }
        return result;
    }

    //further methods are ommited
}
MyCustomeConverter类扩展了DozerConverter{ 列表转换到(CollectionWrapper源、列表目标){ 列表结果=新建ArrayList(); 映射器映射器=新DozerBeanMapper();//不正确!!!! for(地址:source.getAddresses()){ add(mapper.map(address,AddressDto.class)); } 返回结果; } //建议采用进一步的方法 } 因此,问题是如何在CustomConverter中为原语使用Dozer转换?

请参阅org.Dozer.MapperAware接口中的“数据结构转换”一章