標籤:blog java io for 2014 ar new log
package tpackage;public class ArrayList<E> {private Object list[];private int sum=0;public ArrayList(){this(16);}public ArrayList(int capacity){list = new Object[capacity];}public E[] toArray() //將Object數組轉型為 E[] {return (E[]) list;}public void add(String string) {list[sum++]="string";}}
package tpackage;public class test1 {public static void main(String[] args) { ArrayList<String> list = new ArrayList<>();list.add("One");list.add("Two");list.add("three");String[] strs=list.toArray();}}
感覺可以的樣子,建立Object數組 在轉型為String[]
運行錯誤提示為
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
意思是轉型錯誤 Object不能轉型為Sting ; 因為建立的的確是Object 數組:
可以這樣解決:
public E[] toArray(){E[] elements=null;if(sum>0){elements=(E[])Array.newInstance(list[0].getClass(), sum);for (int i=0;i<sum; i++) {elements[i]=(E)list[i];}}return elements;}
從第一的值取得對象的實際的Class 執行個體建立數組, 如果E 是Stirng 建立的數組也是Stirng[];
調用toArray()就不會有錯誤啦