2015-04-04 86 views
0

我想創建一個抽象的Vector3類。所以我所做的就是:Java抽象號碼運營商+ =

class Vector3<T extends Number> {} 

和我有3個組成部分:

T x, y, z; 

但是這種方式我不能做操作,比如添加它們togethet,JAVA saies是運營商+ =是未定義方式。但據我所知,數字類都是從抽象的Number類繼承而來的。 有沒有辦法做這樣的事情,還是我必須手動創建Vector3f,我,D等等?

+0

Vector3f,i,d是什麼意思?你的意思是浮點數,整數和雙精度? – CKing 2015-04-04 12:00:26

+0

是的,我有。對不起,如果我不完全可以理解。 – CodezMe 2015-04-04 12:17:47

回答

0

但據我所知,數字類都是從抽象的Number類繼承的。

是的,但這是完全不相干的,當涉及到運營商。

無論您的類型是否延伸Number,您都無法在Java中添加運算符重載。

0

你可以做一個加法,並用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); 
    } ... 
} 

雖然做單獨的類最終可能會更好。