将泛型类作为参数传递

时间:2017-11-19 16:35:33

标签: java generics

在一个抽象类中,我想传递一个泛型类作为函数的参数,但我真的不知道如何。

这是!

public abstract class AbstractConverter<S, T> {

    private Mapper mapper = new DozerBeanMapper();

    protected T DTOtoEntityConverter(S instance) {
        T destObject = mapper.map(instance, Class<T>);
        return destObject;
    }
}

但我不能将Class作为参数传递。

2 个答案:

答案 0 :(得分:3)

protected T DTOtoEntityConverter(S instance, Class<T> clazz) {
    return mapper.map(instance, clazz);
}

您需要Class<T>的实例,并且您也应该将其传递给方法。

如果类有一个方法,我会重写该方法并删除类泛型:

public <S, T> T convertDTOToEntityByClass(S DTO, Class<T> clazz) { ... }

答案 1 :(得分:0)

执行此操作mapper.map(instance, Class<T>);

就像尝试通过传递参数类型来调用方法一样。

喜欢做System.out.println(Integer);

所以你需要传递一个类的实例..这就是你需要做的原因

Class<T> foo = //init the class here
mapper.map(instance, foo);