import java.util.ArrayList;public class ArrayListTest {
   public static void test(ArrayList<?> list){
      System.out.println(list);
      list.add(new Integer(4), null);
      list.add(new Integer(4));  //凭什么这个添加就不成功??
   }
}

解决方案 »

  1.   

    因为ADD后面应该插入两列数值;
      

  2.   

    向“未知集合”中添加对象不是类型安全的,这会导致编译错误,唯一例外的是null
    http://whitesock.javaeye.com/blog/185692
    http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf 
      

  3.   

    这个问题有点意思。
    list.add(new Integer(4), null);为什么会成功呢?list.add()两个参数的方法有一个是按照索引往里面添加东西的,jdk5以后可以自动拆装箱,因此,这个相当于:
    list.add(4,null);
    而,因为List<?>是未知类型,因为不能添加任何类型,只能添加null了,null可以当成任意类型。
    反编译字节码有这么两句:
    13: invokespecial #5; //Method java/lang/Integer."<init>":(I)V
    16: invokevirtual #6; //Method java/lang/Integer.intValue:()I
    可以看出来。
      

  4.   

    晕,你应该去看看去看看api中ArrayList的add方法:void add(int index, E element) 将指定的元素插入此列表中的指定位置。 没有返回值的add方法应该怎么使用,希望楼主善用api!
      

  5.   

    list.add(new Integer(4), null);用null替代此列表中第三个元素。
    list.add(new Integer(4)); 是将4这个对象加到列表尾部。
    添加不成功的原因是类型不匹配。ArrayList<?> 其中?是通配符表示可以是任何对象。假如我传入的是一个ArrayList<String>这样的list那不是出错了吗。
      

  6.   

    任意类型不是ArrayList<T>吗
      

  7.   

    ArrayList<?> 
    就是没得商量!!!
    什么对象也不能往里加。
    那还要这个东东干吗》!!????