我刚刚开始学习 java 在书中有段源代码 其中有一句我弄不明白 希望大家能帮一把,谢了先!问题如下://ListToArray.java
import java.util.ArrayList;
public class ListToArray
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add(new Double(89.223));
al.add(new Double(8.88));
al.add(new Double(98.1));
al.add(new Double(9.08));
al.add(new Double(7.56));
System.out.println("内容是:" + al);
Object a[] = al.toArray(); //这个 Object 到底是什么类型啊? 为什么不能直接声明为 Double 类型?
Double sum =0.000;
for(int i=0;i<a.length;i++)
sum+=((Double)a[i]).doubleValue();
System.out.println("Sum:" + sum);
}
}

解决方案 »

  1.   

    Object a[] = al.toArray();==>Double a[] = al.toArray(new Double[0]{});这样就行了。
      

  2.   

    因为ArrayList al = new ArrayList();这个集合元素的类型是Object,
    所以toArray之后肯定是Object数组撒
      

  3.   

    一切类都是Object类的子类,所以任何类都可以向上转化为Object。至于楼主问的问题原因在于,toArray()方法返回的是一个Object对象,因为Double类也为Object的子类,所以如果要直接用 Double 来声明,则为向下转换,可能出现丢失数据的错误。所以要想用Double来定义,可以用1楼说的方法,利用泛型的来解决即可避免问题出现。