Java抽象数字运算符+ =

时间:2015-04-04 11:44:25

标签: java operators abstract-class

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

class Vector3<T extends Number> {}

我有3个组成部分:

T x, y, z;

然而这种方式我不能做像添加它们togethet的操作,java saies运算符+ =未定义类型。但据我所知,数字类都是从抽象的Number类继承而来的。 有办法做这样的事情,还是我必须手动创建Vector3f,i,d等?

2 个答案:

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

尽管如此,单独完成课程可能会更好。