首页 > 代码库 > 遇到的错误java.lang.ClassCastException
遇到的错误java.lang.ClassCastException
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个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。