2015-01-05 31 views
-1

Java爲什麼不允許創建通用數組?如果允許,它有什麼不同?如果它有問題,那麼爲什麼類型轉換對象數組不是?Java - 通用數組的創建和類型轉換的需求

+0

這是數組的實現工件 - 存儲元素類型的類型 - 以及不知道具體類型並被「擦除」的泛型。因此,所有通用數組都是'Object []',它需要對其進行訪問。在處理泛型時直接避免使用數組來避免這種情況 - 或者在實現中,從「已知上下文」應用相應的強制轉換。 – user2864740

+0

它的確如此。你可以自由地做到這一點: Object [] putAnyTypeHere = new Object [10]; – duffymo

+1

[Type Erasure](http://docs.oracle.com/javase/tutorial/java/generics/erasure.html)。 –

回答

-1

我想你的意思是「通用數組」是Object[]

好吧,它會產生問題,因爲當你初始化一個大小爲n的數組時,你會分配n相同的塊。
例如:

Integer[] x = new Integer[10]; 

分配的4個字節= 40個字節10個塊。

然而,

Object[] x = new Object[10]; 

是模糊的,因爲它無法知道,如果你要存儲Double S,String S或你剛創建自定義對象。

+1

這是不正確的。整數和對象佔用相同數量的「分配」空間。只有原始類型(例如'int')的行爲與[所有其他]參考類型不同。 Java不支持相當於C#的值類型。 – user2864740