关于范型....

ooo19841080xinxin 2008-10-27 10:39:21
这种

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;
}
...全文
139 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gch_h 2008-10-27
  • 打赏
  • 举报
回复
一个简单的例子,
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()(真够累的!)
justinavril 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ZangXT 的回复:]
引用 3 楼 justinavril 的回复:
第一 编译期确定了容器内的元素类型
第二 取出元素后不用在强制装换了 因为你知道里面是什么了 准确的说是JVM知道里面是什么

小提醒,不关jvm的事,呵呵。
还是需要强制转化的,不过是编译器给你增加了处理语句而已。
[/Quote]
应该是编译器...
ZangXT 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 justinavril 的回复:]
第一 编译期确定了容器内的元素类型
第二 取出元素后不用在强制装换了 因为你知道里面是什么了 准确的说是JVM知道里面是什么
[/Quote]
小提醒,不关jvm的事,呵呵。
还是需要强制转化的,不过是编译器给你增加了处理语句而已。
qq278095755 2008-10-27
  • 打赏
  • 举报
回复
如果用泛型定义某个实体bean ,该bean就可以接受任何你想放入的对象,并不用强制类型转化。
justinavril 2008-10-27
  • 打赏
  • 举报
回复
第一 编译期确定了容器内的元素类型
第二 取出元素后不用在强制装换了 因为你知道里面是什么了 准确的说是JVM知道里面是什么
cydp007 2008-10-27
  • 打赏
  • 举报
回复
算是防止你装入别的不是<T>类型的东西. 导致以后可能会出现的 ClassCastException吧.

只要你一次确定T是什么类型了. 那这个就只能装那种了.
wyyl00 2008-10-27
  • 打赏
  • 举报
回复
使用了泛型后,你放进Collection里的东西,取出来还是你定义的类型,
没有使用,放进去是你定义的类型,取出来都是Object类型
ouyangxiaokang6 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wyyl00 的回复:]
使用了泛型后,你放进Collection里的东西,取出来还是你定义的类型,
没有使用,放进去是你定义的类型,取出来都是Object类型
[/Quote]
up

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧