黑马程序员技术交流社区

标题: 参数化类型的问题 [打印本页]

作者: 黑马张健    时间: 2012-5-28 19:22
标题: 参数化类型的问题
Vector<Object> v = new Vector<String>(); 编译器会报错误,因为参数化类型不考虑类型参数的继承关系。
但为什么这样写编译器就能通过呢?
Vector v1 = new Vector<String>();  
Vector<Object> v = v1;
有点不太明白,请高手解释一下原因。 谢谢!
作者: 李哲    时间: 2012-5-28 19:49
本帖最后由 李哲 于 2012-5-28 19:51 编辑

泛型只是给编译器使用,但是编译器不知道v1包含什么元素,也就不会报错。
作者: 赵玮_Tom    时间: 2012-5-28 19:56
本帖最后由 赵玮_Tom 于 2012-5-28 22:08 编辑

编译过程只是严格检查语法。第一句编译不报错是因为没有参数化类型的引用可以接收参数化类型的实例,第二据编译不报错是因为对编译器而言,无参数化的变量也是可以赋值给参数化的变量的。而如果两句合并为一句,肯定要报错,因为泛型是不存在继承关系的。因为平时我们看程序时,已经形成了运行程序代码的习惯,所以很容易产生误区。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2