我正在尝试创建一个矩阵库(教育目的),但遇到了一个难题,我不确定如何优雅地解决。添加两个矩阵是一项简单的任务,只需在每个矩阵的元素上使用方法get()即可。
然而,我使用的语法是错误的。NetBeans声称它期望一个类,但找到了一个类型参数; 对我来说,类型参数只是一个具有1:1映射到类集的集合。
我在这里错在哪里?我以前从未见过类型参数除了类之外的任何东西,因此以下代码段不应该意味着M是一个类吗? M extends Matrix
然而,我使用的语法是错误的。NetBeans声称它期望一个类,但找到了一个类型参数; 对我来说,类型参数只是一个具有1:1映射到类集的集合。
我在这里错在哪里?我以前从未见过类型参数除了类之外的任何东西,因此以下代码段不应该意味着M是一个类吗? M extends Matrix
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);
}
M
,因为你不知道它的确切类型。 - Andrew Tobilkopublic abstract <M extends Matrix> M plus(M other);
并在子类中实现它。 - Andrew Tobilko