A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© IT人 中级黑马   /  2013-12-20 22:30  /  1058 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.   Vector v1 = new Vector<String>();//参数化类型给原始类型
     2.   Vector<Object> v = v1;//原始类型给参数化类型
  在上述代码中执行完第一步,那么引用类型v1不就指向String类型了么?
但是根据泛型的特点,第二步是不允许的!根据老师讲的这两步都允许,那么
Vector<Object> v1 = new Vector<String>()是不允许的。问题就是
Vector v1 = new Vector<String>()和Vector<String> v1有什么不同???还是我想错了??请大家给解答一下

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

5 个回复

倒序浏览
我记得老师说的是:编译器只是检查语法错误,而且是一行一行的检查,所以
“Vector v1 = new Vector<String>();//参数化类型给原始类型   Vector<Object> v = v1;//原始类型给参数化类型”
这样写没有错;
但是按照Vector<Object> v1 = new Vector<String>()这样写,编译肯定是通不过的呀,前后类型都不一样

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
好像明白了,也就是说1.Vector v1 = new Vector<String>();和2.Vector<String> v1 = new Vector<String>();这两句话没有区别,但是对于编译器来说,编译器是一行一行检查的,所以在检查1句的
的时候,编译器认为1句中的v1是原始类型,但是对于2句中的v1是参数化类型。我这样理解对么??有什么不足的地方!先谢谢啦!
回复 使用道具 举报
有点没有说完,接着上边的说,也就是说当执行Vector<Object> v = v1;时1句中的V1被编译器认为是
原始类型。而2句中的v1被编译器认为是参数化类型。对么?请各位指点一下
回复 使用道具 举报
IT人 发表于 2013-12-21 10:04
有点没有说完,接着上边的说,也就是说当执行Vector v = v1;时1句中的V1被编译器认为是
原始类型。而2句中 ...

是的,就是这样理解
回复 使用道具 举报
谢谢啦,共同学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马