我试图创建一个矩阵库(教育目的),并已达到障碍,我不知道如何处理宽限。添加两个矩阵是一项简单的任务,对每个矩阵的元素分别使用方法get()。抽象类方法 - 实例化子类对象?
但是,我使用的语法是错误的。 NetBeans声称它期待一个类,但发现一个类型参数;对我而言,类型参数只是一组1:1映射到类的集合。
为什么我在这里错了?我从来没有见过类型参数比以前的任何类别都要多,所以下面的内容不应该暗示M是类吗?
中号扩展矩阵
public abstract class Matrix<T extends Number, M extends Matrix>
{
private int rows, cols;
public Matrix(int rows, int cols)
{
this.rows = rows;
this.cols = cols;
}
public M plus(Matrix other)
{
// Do some maths using get() on implicit and explicit arguments.
// Store result in a new matrix of the same type as the implicit argument,
// using set() on a new matrix.
M result = new M(2, 2); /* Example */
}
public abstract T get(int row, int col);
public abstract void set(int row, int col, T val);
}
为什么Matrix类有一个扩展自己的类型? –
@ cricket_007我的推理是函数plus()应该返回一个其类扩展Matrix的对象。现在我输入它真的很愚蠢。也许返回类型应该是Matrix ..但是我不能在plus()函数中实例化一个矩阵,对吧?因为它是一个抽象类。 –
你不能直接实例化一个类型参数'M',因为你不知道它的确切类型。 – Andrew