我想使用一个泛型类作为另一个泛型类的类型参数。
起初我的类定义是这样的:
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/