我試圖創建一個矩陣庫(教育目的),並已達到障礙,我不知道如何處理寬限。添加兩個矩陣是一項簡單的任務,對每個矩陣的元素分別使用方法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