从Object extends Number获取原始值?

时间:2014-06-27 22:29:35

标签: java oop

我正在尝试创建一个类,可以处理减去,添加,更新给定类型的数字(扩展数字的任何东西)。

public class DynamicNumber<T extends Number> {

    private T number;

    public DynamicNumber(T number) {
        this.number = number;
    }

    public void add(T number) {
        this.number += number;
    }

    public void subtract(T number) {
        this.number -= number;
    }

}

这不会起作用并抛出以下异常:

  

对于参数类型(T,T)

,运算符+ =未定义

这是因为您不能将该运算符用于对象,而只能用于原始值。

我的问题是如何在不知道它的确切类型的情况下获得给定对象的原始值,但只知道它扩展了数字?

1 个答案:

答案 0 :(得分:2)

T总是扩展Object,而不是原始的。您可以使用instanceof然后强制转换为扩展Number的对象。之后 - 如果对象表示基元 - 您可以使用自动拆箱或使用显式转换来使用它。没有办法解决这个问题。