2011-10-03 154 views
1

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

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

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

+2

要注意Integer是对象,int是原始类型。 – Nettogrof

+0

要做到这一点,使int数组变成一个整数数组:'Integer [] b = {1,2};'那么你可以'Number [] a = b;' – bittersweetryan

+0

“整数扩展数字”但int不会:) –

回答

5

你不能直接这样做,因为“基元数组”不是“数组对象”。数组不会出现自动装箱。

但是你可以使用ArrayUtils.toObject(b)(来自commons-lang)。这将创建包装型(Integer)的一个新的数组,并与来自原始数组中的值填充:

int[] a = {1,2}; 
Number[] n = ArrayUtils.toObject(a); 
-1

我想这与Number是一个抽象类(API Page)有关,这意味着它不能用于表示项目,但允许其他类共享功能。如果您可以将项目存储在Number阵列中,则它们将丢失其类型,并成为Number的实例,因为它是抽象的,所以这是不可能的。

+0

对象不会丢失其类型。如果您将整数存储在数组数组中,则它保持整数。它只是在数组中被引用为数字。而且它是正确的,因为Integer *是一个数字。如果我把你放在旅客队伍中,对我来说,你只是一个旅行者。但是这并不意味着你失去了你的ianhales的身份。 –

+0

够公平的,我的Java很生疏,至少可以说!这是我在Matlab中工作得到的东西;) – n00dle

5

由于int和整数是两个独立的类型。第一个是基本类型,第二个是对象类型。 Integer扩展了Number,但是int甚至不是一个类,因此它不能扩展任何东西。