黑马程序员技术交流社区

标题: 泛型定义的问题 [打印本页]

作者: 不冬眠的蚂蚁    时间: 2014-3-9 17:04
标题: 泛型定义的问题
本帖最后由 不冬眠的蚂蚁 于 2014-3-13 22:47 编辑

Vector<String> v = new Vector<Object>();
Vector<Object> v = new Vector<String>();
这两种 写法都错了 没听太明白  说说??
作者: 灰太狼爱平底锅1    时间: 2014-3-9 18:00
参数化类型不考虑类型参数的继承关系,如果Vector<String> v = new Vector<Object>();可以应用的话,那对象v中的存入的应为String类型的值,但实际却可以将任意类型存入v中,这是矛盾的,反义亦然。
作者: 刘望望    时间: 2014-3-9 22:05
简单的说泛型就是提前规定该集合中存数数据的类型,
第一个Vector<String> v = new Vector<Object>(); 就好比是声明了一个存储String类型数据的集合引用,而指向的地址(可以理解成给他的赋值)确是存储Object类型的集合,不能确定该Object类型就一定能转换成String类型,所以会报错;
而第二个是同样的道理,Vector<Object> v = new Vector<String>(); 声明的存储Object类型的集合所储存的数据不确定是什么类型,而强要将String类型的数据与之转换也无法保证正确。
总之就是前后类型不一致,无法转换




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