public class q177 {    public static void append(List list) {
        list.add("0042");
    }    public static void main(String[] args) {
        List<Integer> intList = new ArrayList<Integer>();
        append(intList);
        System.out.println(intList.get(0));
    }
}请问为什么String类型的"0042"也被装进了intList呢?不是已经用了泛型了吗?

解决方案 »

  1.   

    集合框架的所有类和接口都支持泛型,list接口的源程序
    public interface List<E>{
    ...........
    ...........
    void add<E e>;
    }
    List<Integer> intList所以intList的add方法自动给形参设定类型void add(Integer i)
    传递时候传递的指示引用所以append方法中的list和intList指向同一个对象,但是list没有制定形参
    list所对应的add方法为void add(E e)所以可以加入字符串