java – 抽象类方法 – 实例化子类对象?
作者:互联网
我正在尝试创建一个矩阵库(教育目的)并且已经遇到了障碍我不知道如何接近优雅.添加两个矩阵是一项简单的任务,在每个矩阵的元素上单独使用方法get().
但是,我使用的语法是错误的. NetBeans声称它期望一个类,但发现了一个类型参数;对我来说,类型参数只是一组与1到1的映射到类的集合.
我为什么在这里错了?我以前从未见过类型参数是除了类以外的任何东西,所以下面的一点不应该暗示M是一个类吗?
M扩展了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,因为您不知道其确切类型.
我建议考虑创建以下方法
public abstract <M extends Matrix> M plus(M other);
及其在子类中的实现.
标签:java,generic-programming 来源: https://codeday.me/bug/20190623/1269620.html