我試圖創建一個自定義類創建矩陣,並且除其他外,執行將所有單元相加或將它們全部相加的操作。然而,我想使用泛型所以基質可以是任何類型的號碼的:浮點,雙精度,整型,等。因此我已經設置了類這樣的:在矩陣加法/乘法中使用泛型
public class Matrix<num>
在初始化時,這個類的實例化根據用戶提供的數據創建矩陣,存儲在實例的.matrix變量中。現在,在我想合併所有單元的代碼中,我做的是這樣的:
public num addMatrices(num[][] toAdd){
num result;
if (toAdd.length != this.rows && toAdd[0].length != this.columns){
System.out.println("Matrix mismatch. Try Again.");
return toAdd[0][0];
}
for (int i=0; i<rows; i++)
for (int j=0; j<rows; j++){
result = this.matrix[i][j] + toAdd[i][j];
}
}
但是,我遇到了多個問題。首先,我無法將結果初始化爲零,這使得難以執行+ =操作。其次,當我嘗試添加兩個矩陣的單元格時,編譯器告訴我+類型num的操作符未定義。
我認爲泛型的全部觀點是有一個catchall類型,所以我可以做一些事情,比如在一個case中使用float和在另一個case中使用int,但是如果我需要爲+等操作符指定類型,我不會確定優勢來自何處...
因爲你只做加法或任何有點arthematic操作我建議你使用通配符upperbounds。即,您可以使您的類聲明爲'public class Matrix { ' –
PermGenError
不起作用。 – cybye
@PremGenError請注意,抽象類'Number'沒有多大用處,它主要是接口來從基本類型的Object版本中獲取值。會指定'Num extends Number'啓用自動裝箱? –