Java Object[] 向下強轉的時候可能會發生異常

List<Long> longList = new ArrayList<>();
longList.add(1L);
Long[] longArrays = (Long[]) longList.toArray();        

好比說上面的代碼執行的時候會發生異常:java

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Long;數組

緣由:其實這個錯誤不太明確,真正致使上面的強轉發生異常的緣由是,new ArrayList()建立的時候,有一個默認的初始長度,這個默認值是10;因此在toArray()建立新的數組的時候,會按照這個長度建立,可是其實longList中並無10個數,這時就會致使上面的異常。這時候,咱們須要本身定義一個長度跟源集合長度相同的數組穿進去就能夠了,以下:io

List<Long> longList = new ArrayList<>();
longList.add(1L);
Long[] longArrays = (Long[]) longList.toArray(new Long[longList.size()]);
相關文章
相關標籤/搜索