我已经编写了一些通用代码来操作不同类型的数据,但我在处理数字数据时遇到了困难。
我有一个像这样的类布局:
public abstract class A<Number> {
.
.
.
}
public class B extends A<Double>{
.
.
.
}
但是,我无法使用 B
作为A<Number>
,尽管 B
是 A<Double>
的子类,它应该是 A<Number>
的子类.
我错过了什么?正确的做法是什么?
最佳答案
B
不可能是A<Number>
因为如果你有一个类似于 void doSomething(T)
的方法那么它不会接受 Integer
(而 T returnSomething
可以工作,因为 Double
可分配给 Number
)。
您可以分配 B
到 A<? extends Number>
, 然而。这意味着“泛型类型是 Number
的某种未知子类型”,这通常是您所需要的。
关于java - 有没有办法让 A<Number> 的子类 B<Double> 被强制转换为 A<Number>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59748646/