大晚上的报这么个错,搞了半天
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LApple;
at ArrayTrans.main(ArrayTrans.java:27)
原来java是不可以将object数组直接转化为对应类型的数组的。
Apple ap1 = new Apple("ap1");
Apple ap2 = new Apple("ap2");
Apple ap3 = new Apple("ap3");
Apple ap4 = new Apple("ap4");
List<Apple> al = new ArrayList<Apple>();
al.add(ap1);
al.add(ap2);
al.add(ap3);
al.add(ap4);
Apple[] aArray = (Apple[]) al.toArray();
代码如上,或者简单点如下:
Apple ap1 = new Apple("ap1");
Apple ap2 = new Apple("ap2");
Apple ap3 = new Apple("ap3");
Apple ap4 = new Apple("ap4");
Object[] ol = new Object[20];
ol[0]=ap1;
ol[1]=ap2;
ol[2]=ap3;
Apple[] aArray = (Apple[])ol;
如果必须如此转化:
Apple ap1 = new Apple("ap1");
Apple ap2 = new Apple("ap2");
Apple ap3 = new Apple("ap3");
Apple ap4 = new Apple("ap4");
List<Apple> al = new ArrayList<Apple>();
al.add(ap1);
al.add(ap2);
al.add(ap3);
al.add(ap4);
Apple[] aArray = new Apple[al.size()];
al.toArray(aArray);
al.clear();
System.out.println(al.size());
System.out.println(aArray[3].toString());