ArrayList al = new ArrayList();
......//al 数据写入
String[] strs = (String[]) al.toArray();
这个是错的 为什么?
为什么 在集合里面 又有这种写法是对的呢?
E[] strs = (E[]) new Object[];
......//al 数据写入
String[] strs = (String[]) al.toArray();
这个是错的 为什么?
为什么 在集合里面 又有这种写法是对的呢?
E[] strs = (E[]) new Object[];
ArrayList<String> al=new ArrayList<String>();
String []strs=new String[al.size()];
al.toArray(strs);
这样就可以转了
当然是错的,没有声明数组大小E[] strs = (E[]) new Object[];
这个是泛型模板....写法也标准语法不同...
只知道源码里的toArray返回的是Object类型,按道理是可以转的
但是不知为什么就是转不了
但是这样也可以转
Object objs[]=al.toArray();
for(Object obj:objs)
System.out.println((String)obj);
如果说泛型语法不一样的话,那我声明的泛型类被类型擦除了之后 就有这种语句:String[] strs=(String[])new Object[];
2. T[] toArray(T[] a);
你查源码可以知道, 2是泛型的,1是返回的是Object[]。
如:al.add("dd");
al.add(new Object());
Object[] o= al.toArray();
这样是可以的。你将Object[] 强制转String[]当然错误。
al.add("dd");
al.toArray(new String[0]);
这样当然可以,你指定了这个list转为String[]型。