我想創建一個抽象的Vector3類。所以我所做的就是:Java抽象號碼運營商+ =
class Vector3<T extends Number> {}
和我有3個組成部分:
T x, y, z;
但是這種方式我不能做操作,比如添加它們togethet,JAVA saies是運營商+ =是未定義方式。但據我所知,數字類都是從抽象的Number類繼承而來的。 有沒有辦法做這樣的事情,還是我必須手動創建Vector3f,我,D等等?
我想創建一個抽象的Vector3類。所以我所做的就是:Java抽象號碼運營商+ =
class Vector3<T extends Number> {}
和我有3個組成部分:
T x, y, z;
但是這種方式我不能做操作,比如添加它們togethet,JAVA saies是運營商+ =是未定義方式。但據我所知,數字類都是從抽象的Number類繼承而來的。 有沒有辦法做這樣的事情,還是我必須手動創建Vector3f,我,D等等?
但據我所知,數字類都是從抽象的Number類繼承的。
是的,但這是完全不相干的,當涉及到運營商。
無論您的類型是否延伸Number
,您都無法在Java中添加運算符重載。
你可以做一個加法,並用instanceof
來檢查類型。
private T number;
public void add(T other) {
if (number instanceof Integer) {
number = (T) (Integer) ((int) number + (int) other);
} else if (number instanceof Float) {
number = (T) (Float) ((float) number + (float) other);
} ...
}
雖然做單獨的類最終可能會更好。
Vector3f,i,d是什麼意思?你的意思是浮點數,整數和雙精度? – CKing 2015-04-04 12:00:26
是的,我有。對不起,如果我不完全可以理解。 – CodezMe 2015-04-04 12:17:47