整数扩展Number,所以在这个意义上,Number成为int的超类。我想将一个int数组存储到一个Number数组中。 我有以下代码。但是,它似乎不允许在java。
int[] b = {1,2};
Number[] a = b;
为什么java不允许我在数组中存储一个int数组?如何存储它?
答案 0 :(得分:5)
你不能直接这样做,因为“基元数组”不是“对象数组”。阵列不会发生自动装箱。
但你可以使用ArrayUtils.toObject(b)
(来自commons-lang)。这将创建一个包装类型(Integer
)的新数组,并用原始数组中的值填充它:
int[] a = {1,2};
Number[] n = ArrayUtils.toObject(a);
答案 1 :(得分:5)
因为int和Integer是两种不同的类型。第一个是基本类型,第二个是对象类型。整数扩展了Number,但是int甚至不是一个类,因此它不能扩展任何东西。
答案 2 :(得分:-1)
我猜这与Number
是抽象类(API Page)有关,这意味着它不能用于表示项目,但允许其他类共享功能。如果您可以将项目存储在Number
数组中,它们将丢失其类型,并成为Number
的实例,这是不可能的,因为它是抽象的。