2011-03-09 54 views
2

我有這個投原始數組對象和背部

int [] abc = new int[30]; 

Object arr = abc; 

我怎麼投arr回到int[]?即

int [] foo = (int[])arr 

而且,如果ARR可能指向int[]byte[],如何區分它們?

我查過arr.getClass().getName()退貨[Iarr.getClass().isPrimitive()false。必須是另一種檢測它的方法?

謝謝。

PS。我必須在我的數組中使用原始類型。

+1

爲什麼你需要這個? – 2011-03-09 21:30:55

回答

6

鑄造是正確的,(int[])arr是伎倆。

您可以通過比較類對象識別的類型,如果你想:

if(arr.getClasS() == int[].class) { 
    ... 
} 

或更好

if(arr instanceof int[]) { 
    ... 
} 

[I類名是另一種方式,但在代碼不太清楚。 你也可以做arr.getClass().getComponentType(),應該返回int.class

+0

很好的答案,但我不能幫助,但要注意到你的「或更好的」是一個(或...),你知道加里朱爾斯的歌。 – 2011-03-09 21:38:18

+0

我不知道您的確切用例,但您可能需要執行Class.isAssignableFrom而不是instanceof或equals檢查。 – Ali 2011-03-09 21:42:19

+0

@Captain:我不知道這首歌(或者聽說過加里·儒勒斯的名字)。你有鏈接嗎? – 2011-03-09 21:45:56