在Java中以通用方式转换集合

时间:2013-10-27 13:14:57

标签: java object generics converter

我正在尝试将实现DomainEntity的对象集合转换为实现DomainEntityDTO的对象集合。 DomainEntity对象提供了一种方法toDTO()来进行转换。

这是我的代码。

public class EntityCollectionConverter<T  extends DomainEntityDTO, Y extends DomainEntity> {

    public Collection<T> convert(Collection<Y> collection){

        Collection<T> dtoList = new ArrayList<>();
        for (DomainEntity domainObject : collection) {
            DomainEntityDTO dto = domainObject.toDTO();
            dtoList.add(dto); // Compiler: "T cannot be applied to DomainEntityDTO"
        }
        return dtoList;

    }
}

dtoList.add(dto);无法编译,因为“T无法应用于DomainEntityDTO”。

接口DomainEntity如下所示:

public interface DomainEntity {
    Long getId();

    <T extends DomainEntityDTO> T toDTO();
}

知道我哪里错了吗?

1 个答案:

答案 0 :(得分:0)

您需要声明类型为T的变量。