这种 static <T> Collection<T> select(Class<T> cls,ResultSet rs) {
Collection<T> result = new ArrayList<T>();
while(rs.next()){
T item = getItem(cls, rs);
result.add(item);
}
return result;
}和这种有什么区别,上边的好处在那里 Collection select(Class cls,ResultSet rs) {
Collection result = new ArrayList();
while(rs.next()){
Object item = getItem(cls, rs);
result.add(item);
}
return result;
}
Collection<T> result = new ArrayList<T>();
while(rs.next()){
T item = getItem(cls, rs);
result.add(item);
}
return result;
}和这种有什么区别,上边的好处在那里 Collection select(Class cls,ResultSet rs) {
Collection result = new ArrayList();
while(rs.next()){
Object item = getItem(cls, rs);
result.add(item);
}
return result;
}
没有使用,放进去是你定义的类型,取出来都是Object类型
第二 取出元素后不用在强制装换了 因为你知道里面是什么了 准确的说是JVM知道里面是什么
还是需要强制转化的,不过是编译器给你增加了处理语句而已。
Collection<String> result = new ArrayList<String>();
这时,你只能给result 中存放String类实例。如果你存放其他类就会报错。这个好像叫类型安全吧
而你取出来时,String s = result.remove();就可以类,不必强制转换如String s = (String)result.remove()(省下强制转换的资源)如果你没有泛化
Collection result = new ArrayList();
这时,你可以给result存放任何Object对象,比如可以放一个Stirng对象,同时再放一个HashMap对象,取出来的时候你将不知道你取到的是什么类对象,(够你判断好久了)。
而且你不能使用String s = result.remove(); 必须使用String s = (String)result.remove(),或HashMap m = (HashMap)result.remove()(真够累的!)