如何将int数组存储到数字数组中?

时间:2011-10-03 19:40:09

标签: java

整数扩展Number,所以在这个意义上,Number成为int的超类。我想将一个int数组存储到一个Number数组中。 我有以下代码。但是,它似乎不允许在java。

    int[] b = {1,2};
    Number[] a = b;

为什么java不允许我在数组中存储一个int数组?如何存储它?

3 个答案:

答案 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的实例,这是不可能的,因为它是抽象的。