奇怪的类型转换!!!

zhanggc1001 2007-11-21 05:12:33
我定义了一个Employee类
List<Employee> list=new ArrayList<Employee>();
然后用list中添加了几个Employee对象
我想把把list转换成对象数组
Employee []staff1=list.toArray();
为什么这样的转换会抛出类型无法转换的异常呢??想不通
而这样转就可以:
Object obj[]=list.toArray();
for(Object e:obj)

...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlq11111111 2007-11-21
  • 打赏
  • 举报
回复
list.toArray()的返回值是Object数组类型,定义好了
你可以这样改
Employee [] a=new Employee(list.size());
Employee []staff1=list.toArray(a);
你可以查查JDK说明
pancras 2007-11-21
  • 打赏
  • 举报
回复
public Object[] toArray() {
Object[] result = new Object[size];
System.arraycopy(elementData, 0, result, 0, size);
return result;
}

这是ArrayList的源代码 toArray()方法是没有使用泛型的


不过这个方法可以
public <T> T[] toArray(T[] a) {
if (a.length < size)
a = (T[])java.lang.reflect.Array.
newInstance(a.getClass().getComponentType(), size);
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
你可以这样让他泛型
Employee emps[] = new Employee[list.size()];
list.toArray(emps);
  • 打赏
  • 举报
回复
list.toArray();返回的是一个Object[]而不是Employee[]
zhanggc1001 2007-11-21
  • 打赏
  • 举报
回复
System.out.println((Employee)e);
这是为什么啊!!
请高人指教!!

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧