List<Integer> list = new ArrayList<Integer>();
list.add(1);

List aa = list;
aa.add("bb");

    System.out.println("value:"+list.get(1));
想问一下为何list里已经确定了只存Integer,通过aa添加的字符串类型bb仍然能够通过list.get(1)读出来

解决方案 »

  1.   

    因为你是对aa添加字符串,而aa没有指定是Integer,list才是Integer
      

  2.   

    晕 泛型是和具体的List对象绑定的 不是和List类绑定的 你的list是指定了泛型 但是aa并没有指定泛型啊。。
      

  3.   

    List aa = list;aa没有指定泛型,当然如果list.add("bb");是会错的
      

  4.   

    泛型是与具体的List对象绑定的,不是与List类绑定的
      

  5.   

    你能通过list.get(1)读出来吗?
    不会抛异常吗?
      

  6.   

    这种现象好象是叫类型的擦除。http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.6英文不好,你自己看看吧。