Java 具有类型标识符的抽象类-不允许使用原语?
我有一个关于这篇文章的问题:尤其是比约恩的回答: 难道不能为数据类型说明符使用基本数据类型吗? 具体来说,我有一个问题,我有一个抽象类“矩阵”和两个子类继承自“矩阵”。一种是“ComplexMatrix”,它基本上是一个包含复杂项的矩阵。因此,我创建了一个类“Complex”。另一个是“正常”双矩阵Java 具有类型标识符的抽象类-不允许使用原语?,java,generics,Java,Generics,我有一个关于这篇文章的问题:尤其是比约恩的回答: 难道不能为数据类型说明符使用基本数据类型吗? 具体来说,我有一个问题,我有一个抽象类“矩阵”和两个子类继承自“矩阵”。一种是“ComplexMatrix”,它基本上是一个包含复杂项的矩阵。因此,我创建了一个类“Complex”。另一个是“正常”双矩阵 public abstract class Matrix<T> { public abstract T getValue(int r, int c); } public cla
public abstract class Matrix<T> {
public abstract T getValue(int r, int c);
}
public class ComplexMatrix extends Matrix<Complex> {
public Complex getValue(int r, int c){
return null;
}
}
public class DoubleMatrix extends Matrix<double> {
public double getValue(int r, int c){
return double.NaN;
}
}
公共抽象类矩阵{
公共摘要T getValue(intr,intc);
}
公共类ComplexMatrix扩展矩阵{
公共复合体getValue(int r,int c){
返回null;
}
}
公共类双矩阵扩展矩阵{
公共双getValue(int r,int c){
返回double.NaN;
}
}
第一个是ComplexMatrix,它可以工作。第二个没有。它对public class DoubleMatrix extends Matrix<Double> {
public double getValue(int r, int c){
return Double.NaN;
}
}
公共类DoubleMatrix扩展了矩阵{
公共双getValue(int r,int c){
返回Double.NaN;
}
}
错误消息说,“返回类型double与double不兼容”,其中T是一个类型变量
有人能告诉我为什么这不起作用吗?为什么它与“谢谢。如果类型参数是无界的,Java编译器将泛型类型中的所有类型参数替换为它们的边界或对象。在您的示例中,double是一种基本类型。所以你得到了那个错误
选中此链接不能将基元类型与泛型一起使用。您已经更改了
矩阵中的类型参数,但没有更改返回类型中的类型参数。公共双getValue(int r,int c){
=>公共双getValue(int r,int c){
在上一次尝试中,您不能在泛型中使用原语。因此基于“所以,任何用作泛型的东西都必须可以转换为对象(在本例中,get(0)返回一个对象),而基元类型不是。“因此它们不能在泛型中使用。”从jw23的链接来看,我试图实现的事情无法实现?