遇到的錯誤java.lang.ClassCastException

來源:互聯網
上載者:User

標籤: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()就不會有錯誤啦

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.