2011-10-03 36 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甚至不是一個類,因此它不能擴展任何東西。