2015-03-02 19 views
-2

我不知道這對我來說是一個心理障礙還是儘管花了幾個小時來研究已經提出的問題,但我無法得出最終結論。試圖理解這麼多不同的答案,我迷茫和困惑。 :(Java中的一些嚴重的重複問題

請告訴我最好的方式做以下。我花了大量時間通過存在的問題去,但不能得到底線。

我想一個ArrayList轉換成數組,而這樣做,有關對象和數組的另一個問題類型轉換彈出。

ArrayList<Integer> al = new ArrayList<Integer>(); 
    al.add(1); 
    al.add(2); 
    al.add(3); 
    Object[] oa = al.toArray(); 
    int [] a = new int[al.size()]; 
    a = (int[]) oa; 

在最後一行,它說我不能從對象轉換[]爲int []。

那麼,如何做我類型轉換那麼因爲toArray方法只返回一個Obj ect數組。

+1

您是否閱讀[如何將列表轉換爲int在Java?](http://stackoverflow.com/questions/960431/how-to-convert-listinteger-to-int-in-java)? – Pshemo 2015-03-02 20:27:14

回答

4

數組是一個Integer對象的數組。而你正在試圖將它投射到一組int s。

您必須記住,將陣列轉換爲其他類型時,不會發生對原始類型(int)的引用類型(Integer)的自動裝箱/拆箱操作。

+0

那麼,這是否意味着我必須遍歷所有元素並使用intValue()方法將每個Integer轉換爲int? – Boyyett 2015-03-02 20:31:45

+0

我的問題是,爲什麼你需要'int []'這麼糟糕? 'Integer []'你已經有什麼問題了?但簡單的答案是肯定的,在兩者之間沒有_auto-conversion_ ......你註定要進入循環。 – RudolphEst 2015-03-02 20:34:38

+0

這也行不通。當我這樣做時,它給了我一個類別轉換異常:'Integer [] a =(Integer [])al.toArray();' – Boyyett 2015-03-02 20:40:45

0

你不會施放它;您可以從oa獲得Integer,將每個值作爲int,您可以將可以將置入a