编程语言
首页 > 编程语言> > java – 抽象类方法 – 实例化子类对象?

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