我正在尝试创建一个可以处理给定类型(任何扩展 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/