2015-04-04 4 views
0

Я хотел бы создать абстрактный класс Vector3. Так что я сделал:Java abstract Number operator + =

class Vector3<T extends Number> {} 

И у меня есть 3 компонента:

T x, y, z; 

Однако этот способ я не могу делать такие операции, как добавить их togethet, Java saies, что оператор + = не определено для типа. Но насколько я знаю, классы чисел наследуются от абстрактного класса Number. Есть ли способ сделать что-то подобное, или мне нужно создать Vector3f, i, d и т. Д. Вручную?

+0

Что вы подразумеваете под Vector3f, i, d? Вы имеете в виду float, integer и double? – CKing

+0

Да, да. Извините, если я не был полностью понятен. – CodezMe

ответ

0

Но насколько я знаю, классы чисел наследуются от абстрактного класса Number.

Да, но это совершенно не имеет отношения к операторам.

Вы не можете добавлять перегрузки операторов в Java вообще, независимо от того, распространяется ли ваш тип Number.

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); 
    } ... 
} 

Выполнение отдельных классов может оказаться лучше.