我想创建一个抽象的Vector3类。所以我做的是:
class Vector3<T extends Number> {}
我有3个组成部分:
T x, y, z;
然而这种方式我不能做像添加它们togethet的操作,java saies运算符+ =未定义类型。但据我所知,数字类都是从抽象的Number类继承而来的。 有办法做这样的事情,还是我必须手动创建Vector3f,i,d等?
答案 0 :(得分:0)
但据我所知,数字类都是从抽象的Number类继承的。
是的,但对于运营商而言,这完全无关紧要。
您无法在Java中添加运算符重载,无论您的类型是否扩展Number
。
答案 1 :(得分: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);
} ...
}
尽管如此,单独完成课程可能会更好。