在java變成中慎用強制類型轉換,盡量使用類自帶的轉換函數或泛型。先看一行代碼
錯誤方法:
1 String[] array= (String[]) list.toArray();
如果list中存放的是string類型,上面的代碼看上去似乎沒有問題,但是運行就會報錯:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
java中的強制類型轉換只是針對單個對象的,想要偷懶將整個數組轉換成另外一種類型的數組是不行的,這和數組初始化時需要一個個來也是類似的。
那么問題來了,我們經常需要將集合轉換成有類型的數組,不能對數組整體進行強轉,難道要一個一個遍歷一遍轉換?
當然不是,jdk集合除了提供toArray()方法,還提供了一個toArray(T[] a)方法,比較low的碼農一般不知道這個也沒怎么研究過,甚至去遍歷一遍一個一個轉。
使用方法:
1 String[] array = new String[list.size()]; 2 list.toArray(array);
或:
1 String[] array= list.toArray(new String[list.size()]);