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

解决方案 »

  1.   

       System.out.println((Employee)e);
    这是为什么啊!!
    请高人指教!!
      

  2.   

    list.toArray();返回的是一个Object[]而不是Employee[]
      

  3.   

     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);
      

  4.   

    list.toArray()的返回值是Object数组类型,定义好了
    你可以这样改
    Employee [] a=new Employee(list.size());
    Employee []staff1=list.toArray(a);
    你可以查查JDK说明