List  aList = new ArrayList<String>();
aList.add(new StringBuilder("kkk"));
aList.add(new Integer(4));
问题1: 等式右边是泛型,可是左边算什么呢?是自动推导? 那为什么可以add任何类型? 
  有种说法是 等式左边不声明泛型时,就是默认的是Object,所以可以add任何类型进去.如果这种说法是正确的.List<Object>  aList = new ArrayList<String>();//这样会报错啊.
问题2: 这种方法定义List有什么好处?对取出List数据时有什么特殊要求没有? 

解决方案 »

  1.   

    本质上java的泛型是编译期优化特殊处理的,JVM本身并不支持.
    所以可以叫它伪泛型.
    下面的例子编译器会认为Object和String不同,仅是认识上的不同.
      

  2.   

    List list = new ArrayList();大小写严格区分的。ArrayList是实现了List接口的一个类,用接口来实例化对象,那么对象只能调用从接口里面的方法。
      

  3.   

    List<Comparable> list=new ArrayList<Comparable>();
    list.add(new Integer(2));
    list.add("abc");
      

  4.   


    List list = new ArrayList<这个应该是javabean代码??>();
    list.add(new 人和类型么?(大小?));
    list.add("这里写的什么?")
      

  5.   


    问题二
    List接口分为Arralist类和Likedlist类,
    两个类都可用于增删改查,
    Arralist 习惯用于对数据的遍历和检索(查询),
    Likedlist 用于对数据的增删改。
    List接口范围更广。没什么特殊要求吧,就是添加的值要和泛型里值类型一样,
    安全性比较高。
      

  6.   


    是我没把题意说清楚吗? 汗 ! 
        List aList = new ArrayList<String>(); aList.add(new StringBuilder("kkk")); aList.add(new Integer(4));
    问题1: 等式右边是泛型,可是左边算什么呢?是自动推导? 那为什么可以add任何类型?
      有种说法是 等式左边不声明泛型时,就是默认的是Object(但是泛型的时候左右两边的类型不一样的话是会出问题的啊 代码 例子如下),所以可以add任何类型进去.如果这种说法是正确的.    List<Object> aList = new ArrayList<String>();//这样会报错啊.
      

  7.   

     List<Object> aList = new ArrayList<String>();//这样会报错啊.
    List 为类,
    然后.ArrayList是他的实现,你要是以后想起来要换数据类型,
    只要把List 重包装一下就行了.别的我也记不得了.
     你那个前面List<Object>  后面是  ArrayList<String> ,
    肯定错了,后面是  ArrayList<Object>  ···
    下面这个作为小小参考吧11
                  List<Shopping>  list=new ArrayList<Shopping>();//Shopping是javabean的名字
    DbConn  conn=new DbConn();//DbConn 是連接數據庫的類的名稱

    ResultSet rs=conn.query(sql); //循環數據庫內容
    while (rs.next())
    {
    Shopping  s=new Shopping();
    s.initFromRs(rs);
    list.add(s);
    }


      

  8.   

    接口 List<E> ,是范型的接口。
    List<Object>  aList = new ArrayList<String>();//
    new ArrayList<String> 实现的是List<String>接口,aList实现的是List<Object>。
    所以会出错。
    List  aList = new ArrayList<String>();
    new ArrayList<String>() , aList实现的都是List接口。
    可以理解为List兼容任何List<?>,包括List<Object>。List 和 List<Object>
    就好比一个人兼任校长 List 和主任 List<Object>。虽然称呼不同,但是其实就是一个人。
    校长办公司门卫(java编译器),不知道校长和主任就是一个人,(sun公司创造java的时候,没有在编译器里面加这么一条)。
    当你说你是 主任 List<Object>的时候。对不起,这是校长办公室。
    当你说你是 校长 List 的时候才让你进去。一般来说。接口是不能协变的。
    List<Collection>  x = new ArrayList<List>(); //绝对错。实现的接口不一样。
    但是稍微改动一下,List a = new ArrayList<List>();
    List<Collection> b = a;明眼人一看,就知道。List<Collection> 的引用,其实就是 new ArrayList<List>();
    范型协变了。而且随你怎么调用,100%不会出错。之所以能这样,就是因为 List 能兼容任何 List<E>,跳过了编译器的检查。而并不是真的类型转换了。
      

  9.   

    本质上java的泛型是编译期优化特殊处理的,JVM本身并不支持. 
    所以可以叫它伪泛型. 
    下面的例子编译器会认为Object和String不同,仅是认识上的不同.