为了更好的理解我们先看下面的例子:
package com.yonyou.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 测试类
* @author 小浩
* @创建日期 2015-3-2
*/
public class Test{
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("Hello");
list.add("World");
list.add("HAHAHAHA");
String[] strArray2=new String[list.size()];
list.toArray(strArray2);
for(int i=0;i<strArray2.length;i++)
{
System.out.println(strArray2[i]);
}
//下面的内容将会出现强制转换的错误
String[] strArray=(String[]) list.toArray(); //list.toArray()会返回Object[]类型的数组,想强制转换为String[]
for(int i=0;i<strArray.length;i++)
{
System.out.println(strArray[i]);
}
}
}
对于上面的出现的问题,主要原因在于数组类型的上下级没有弄明白。
一般对于强制类型转换而言,子类可以强制转换为对应的父类,但父类是不能够强制转换为对应的子类的哦。