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数据时有什么特殊要求没有?
aList.add(new StringBuilder("kkk"));
aList.add(new Integer(4));
问题1: 等式右边是泛型,可是左边算什么呢?是自动推导? 那为什么可以add任何类型?
有种说法是 等式左边不声明泛型时,就是默认的是Object,所以可以add任何类型进去.如果这种说法是正确的.List<Object> aList = new ArrayList<String>();//这样会报错啊.
问题2: 这种方法定义List有什么好处?对取出List数据时有什么特殊要求没有?
所以可以叫它伪泛型.
下面的例子编译器会认为Object和String不同,仅是认识上的不同.
list.add(new Integer(2));
list.add("abc");
List list = new ArrayList<这个应该是javabean代码??>();
list.add(new 人和类型么?(大小?));
list.add("这里写的什么?")
问题二
List接口分为Arralist类和Likedlist类,
两个类都可用于增删改查,
Arralist 习惯用于对数据的遍历和检索(查询),
Likedlist 用于对数据的增删改。
List接口范围更广。没什么特殊要求吧,就是添加的值要和泛型里值类型一样,
安全性比较高。
是我没把题意说清楚吗? 汗 !
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>();//这样会报错啊.
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);
}
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>,跳过了编译器的检查。而并不是真的类型转换了。
所以可以叫它伪泛型.
下面的例子编译器会认为Object和String不同,仅是认识上的不同.