Java抽象数运算符+=
我想创建一个抽象的Vector3类。所以我所做的是:Java抽象数运算符+=,java,operators,abstract-class,Java,Operators,Abstract Class,我想创建一个抽象的Vector3类。所以我所做的是: class Vector3<T extends Number> {} 然而,通过这种方式,我无法执行像将它们添加到一起这样的操作。java说,运算符+=对于该类型是未定义的。但据我所知,数字类都是从抽象数字类继承而来的。 有没有这样的方法,或者我必须手动创建向量3f、I、d等等 但据我所知,数字类都是从抽象数字类继承而来的 是的,但对于操作员来说,这是完全不相关的 您根本无法在Java中添加运算符重载,无论您的类型是否扩展了Nu
class Vector3<T extends Number> {}
然而,通过这种方式,我无法执行像将它们添加到一起这样的操作。java说,运算符+=对于该类型是未定义的。但据我所知,数字类都是从抽象数字类继承而来的。
有没有这样的方法,或者我必须手动创建向量3f、I、d等等
但据我所知,数字类都是从抽象数字类继承而来的
是的,但对于操作员来说,这是完全不相关的
您根本无法在Java中添加运算符重载,无论您的类型是否扩展了
Number
您都可以使用添加方法并使用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);
} ...
}
不过,单独上课可能会更好。向量3f,i,d是什么意思?你是说浮点、整数和双精度吗?是的。对不起,如果我不能完全理解。
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);
} ...
}