解决方案 »

  1.   

    1、1和2都对,int和integer之间能够自动的进行封包和拆包,这是语言本身的特性
    2、3不行,是因为你的形参问题
        把 public static void sum(ArrayList list)   改成  public static void sum(ArrayList<Integer> list)  就可以了
      

  2.   

    3的话,编译器根本不知道list里存的是什么,它只知道是一个object,那么肯定不会有intValue这个方法
      

  3.   

    形参没有用泛型。
    如果形参不用泛型,可以强制类型转换。private static void sum(ArrayList test) {
    int k=((Integer) test.get(0)).intValue();
    System.out.println(k);
    }
      

  4.   

    那我不用泛型也报错,是不是在sum方法中要用强制类型转换
      

  5.   

    是不是只要形参中不指定泛型,传过来的就是Object?
      

  6.   


    不用泛型的话,get方法返回的是Object,那你说Object类型你调用intValue会不会报错。
      

  7.   


    不用泛型的话,get方法返回的是Object,那你说Object类型你调用intValue会不会报错。是不是API文档中,方法前面返回值是E这种泛型的  方法,调用的时候返回的都是Object
      

  8.   

    我理解其传过来的实际上是Integer(否则强制类型转换运行时会报异常),但是这个时候编译器并不知道具体的类型,它当成的是一个Object
      

  9.   

    类型不一致,sum(ArrayList list) 方法 中的参数list其中的元素默认的类型为Object,你下面求的是Int类型的肯定不行的,如果你使用泛型的话,类型不一致的问题就能解决。。
      

  10.   

     public static void sum(ArrayList list) {
            int i = list.get(0).intValue(); //3
            System.out.println(i);
        }  list.get(0)返回的是个Object类型
      可以这样改
      Object i = list.get(0); //3
      就OK啦
      

  11.   

    另外一种改法
     public static void sum(ArrayList<Integer> list) {
           int i = list.get(0); //3
            System.out.println(i);
        }   
      

  12.   

    从1.5开始Java支持自动拆箱,装箱操作
    ArrayList list:可以存入任何类型的数据,默认是Object
    ArrayList<Integer> list:只能存入int/Integer类型的数据,使用了泛型,表明只能存入该种类型数据
      

  13.   

    都不用泛型的情况下,你要在sum方法中做强转
      

  14.   

    都不用泛型的情况下,你要在sum方法中做强转是不是API文档中,方法前面返回值是E这种泛型的  方法,不指定的话调用的时候返回的都是Object
      

  15.   

    都不用泛型的情况下,你要在sum方法中做强转是不是API文档中,方法前面返回值是E这种泛型的  方法,不指定的话调用的时候返回的都是Object
    可以这么理解
      

  16.   

    都不用泛型的情况下,你要在sum方法中做强转是不是API文档中,方法前面返回值是E这种泛型的  方法,不指定的话调用的时候返回的都是Object
    可以这么理解太感谢了