请教高手关于泛型的问题

峰华前端工程师
前端领域优质创作者
博客专家认证
2010-03-07 11:51:24
为什么泛型不能转型呢?比如说,
List<String> list1 = new ArrayList()<String>;
List<Object> list2 = new ArrayList()<Object>;
list2 = list1; //这句话为什么会编译出错呢??请高手指导小菜!
...全文
146 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
临碣 2010-03-07
  • 打赏
  • 举报
回复
泛型本来就是明确操作类型的.

你那么用还不如不用泛型呢
  • 打赏
  • 举报
回复
可是如果: List list3;
list3 = list1;
这样不带泛型的怎么可以转呢?不是默认也是Object吗?
stu202060510 2010-03-07
  • 打赏
  • 举报
回复
多态的赋值只适用于基本类型,而不是泛型参数的类型
正如:
List<Animal> list=new ArrayList<Dog>();
如果可以的话,那么list中可以装Dog对象是没错,但list同样可以装Cat。当向下转型时,你根本不不能确定list中只能装Dog,那么这也失去了定义泛型的作用了
wzju64676266 2010-03-07
  • 打赏
  • 举报
回复
String虽然是Object的子类,但你要把List <String> 、 List <Object>都看成单独的类型


List <String>并不是继承List <Object>,所以编译不过
lgm277531070 2010-03-07
  • 打赏
  • 举报
回复
引用 3 楼 fengqiuzhihua 的回复:
可是如果: List list3;
          list3 = list1;
这样不带泛型的怎么可以转呢?不是默认也是Object吗?


你的list1带了泛型么
List<String> list1 = new ArrayList<String>() ;
List list2 = new ArrayList() ;
list1=list2;
这样编译会报list2未经检查的转换错误呢
soton_dolphin 2010-03-07
  • 打赏
  • 举报
回复
格式应该是这样的:

List <String> list1 = new ArrayList<String>();
stu202060510 2010-03-07
  • 打赏
  • 举报
回复
引用 3 楼 fengqiuzhihua 的回复:
可是如果: List list3;
          list3 = list1;
这样不带泛型的怎么可以转呢?不是默认也是Object吗?

可能List<Object>和List是有区别的

SUN很多情况下会考虑兼容以前的代码
stu202060510 2010-03-07
  • 打赏
  • 举报
回复
引用 3 楼 fengqiuzhihua 的回复:
可是如果: List list3;
          list3 = list1;
这样不带泛型的怎么可以转呢?不是默认也是Object吗?

可能List<Object>和List是有区别的

SUN很多情况下会考虑兼容以前的代码
zhangshan5588 2010-03-07
  • 打赏
  • 举报
回复
貌似泛型jdk1.5后才出现的吧 for(Object o:list){}

62,621

社区成员

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

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