首页 > 解决方案 > 使用泛型类作为类型参数

问题描述

我想使用一个泛型类作为另一个泛型类的类型参数。

起初我的类定义是这样的:

class Foo<T, R extends BaseDto> {}

然后我的要求发生了变化,我不得不为我的R类型使用包装器/持有者类

到目前为止我的尝试:(给出编译时错误:预期的类或接口Bar<R>

class Bar<T extends BaseDto> {
    private T dto;
    public Bar(T dto) {
        this.dto= dto;
    }
    // getters and setters
}
class Foo<T, Bar<R>> {
    private T entity;
    private R dto;
    // getters and setters
}

我不能使用它,Foo<T, Object>因为使用此类的客户不知道他们实际上需要从Objectto 转换Bar

我将如何实施这种行为?

标签: javagenerics

解决方案


不要更改类标题,而是替换您使用的类中的所有R位置Bar<R>

所以类头保持不变:

class Foo<T, R extends CustomClass> 

但是,假设您有一个 type 字段R。这需要更改为Bar<R>

Bar<R> someField;

推荐阅读