本帖最后由 meifage 于 2011-08-16 15:13:22 编辑

解决方案 »

  1.   

    事实上在执行是它是一个Integer类型,这是arrayList1.add(a);造成的,所以报错,因为Integer不能强转成Double
      

  2.   


    没有add之前是Object类型,add后Integer隐形转化为Object吗
      

  3.   

    arrayList1.get(0)返回的实际类型但是int a=5自动装箱后的Integer类型,所以运行的时候(Double)arrayList1.get(0)实际装换是从Integer转换为Doublec所以会报强制转换错误
    避免这个错误可以
    double a=5;
      

  4.   

    arrayList1.get(0)返回类型形式上是Object,实际上arrayList里面第一个元素实际类型是什么返回是什么类型
      

  5.   

    arrayList1.get(0)实际上Integer,而不是int,所以不能将Integer转成Double。强制转换针对的是基本类型,而不是基本类型的封装类。
      

  6.   

    Integer对象不能强行转换为Double对象
    如果想利用java的拆箱装箱机制,可以这样
    Double d=(Double)arrayList1.get(0); -> Double d=(double)arrayList1.get(0);
      

  7.   

    好像不能将Object直接转换为double吧。
      

  8.   

    list.add()将一个Integer转换为object了、
    一个object转Double是没错、
    但是运行起来、
    却是一个Integer转Double所以有错