java - 使用泛型类作为类型参数

标签 java generics

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

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

class Foo<T, R extends BaseDto> {}

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

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

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>因为这样使用此类的客户端将不知道他们实际上需要来自 Object 的强制转换至Bar .

我将如何实现这种行为?

最佳答案

不要更改类 header ,而是替换类中使用 R 的所有位置。与 Bar<R> .

所以类头保持不变:

class Foo<T, R extends CustomClass> 

但是假设您有一个类型为 R 的字段。需要更改为Bar<R> :

Bar<R> someField;

关于java - 使用泛型类作为类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60090167/

相关文章:

java - 检查java中的区域语言

Java:当项目不相关时有界异构集合

c# - List<IJob>.AddRange(List<Job>) 不起作用

java - 在scala中使用泛型创建java匿名类的问题

java - 使用子类对象修改其父类(super class)对象中的 protected 属性

java - 在Android API级别8中, "person"中的 "content://sms/inbox"列与什么匹配?

java - 突出显示在框架中打开的文本文件中的几个单词

Java按钮点击后消失

java - 检查整个数组是否为instanceof

c# - 使用带有泛型的基类创建类型的实例