java - 从 Object 扩展 Number 获取原始值?

标签 java oop

我正在尝试创建一个可以处理给定类型(任何扩展 Number 的数字)的数字的减法、加法、更新的类。

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

}

这将不起作用并引发以下异常:

The operator += is undefined for the argument type(s) (T, T)

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

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

最佳答案

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

关于java - 从 Object 扩展 Number 获取原始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24461667/

相关文章:

java - SwipeRefreshlLayout Android 行为

c# - 设计库存类

vb.net - 声明共享 MustOverride

c++ - 具有不同构造函数参数的 CPP 对象数组

c# - 如何控制 IEnumerable 的更新

java - 如何在 JSF 2 的值表达式和方法表达式中传递参数?

java - 允许在 Android Studio 中显示图像的按钮

ios - iOS View TableViewCell 中的面向对象编程问题

java - 是否存在等于和不等于的变量?

java - 尝试从 GWT 标签获取内部文本