码迷,mamicode.com
首页 > 编程语言 > 详细

遇到的错误java.lang.ClassCastException

时间:2014-08-11 21:32:32      阅读:289      评论:0      收藏:0      [点我收藏+]

标签: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()就不会有错误啦

遇到的错误java.lang.ClassCastException,布布扣,bubuko.com

遇到的错误java.lang.ClassCastException

标签:blog   java   io   for   2014   ar   new   log   

原文地址:http://blog.csdn.net/u013107634/article/details/38496923

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!