Java抽象数运算符+=

Java抽象数运算符+=,java,operators,abstract-class,Java,Operators,Abstract Class,我想创建一个抽象的Vector3类。所以我所做的是: class Vector3<T extends Number> {} 然而,通过这种方式,我无法执行像将它们添加到一起这样的操作。java说,运算符+=对于该类型是未定义的。但据我所知,数字类都是从抽象数字类继承而来的。 有没有这样的方法,或者我必须手动创建向量3f、I、d等等 但据我所知,数字类都是从抽象数字类继承而来的 是的,但对于操作员来说,这是完全不相关的 您根本无法在Java中添加运算符重载,无论您的类型是否扩展了Nu

我想创建一个抽象的Vector3类。所以我所做的是:

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