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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 夏德宇 于 2014-1-9 21:16 编辑
  1. //对的
  2. Vector v = new Vector<Object>();
  3. Vector<String> v1 = v;

  4. //和上面那两句有什么区别呢?
  5. Vector<String> v2 = new Vector<Object>(); //出错
复制代码

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

5 个回复

倒序浏览
类型不对哦,02.Vector v = new Vector<Object>();
03.Vector<String> v1 = v;
你这两句第一句v是object类型,第二句把object提升为String了,有个隐含的转型,是2个操作
而06.Vector<String> v2 = new Vector<Object>();这句话右边那个<Object>就相当于强制转换为Obect,所以及没法再次转换为String了,所以左右类型不同赛

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
有不足请楼下面补充{:soso_e117:}
回复 使用道具 举报
上面没有语法错误 可能是转型  下面两句前后两个尖括号内容不一样是不是有语法错误啊
回复 使用道具 举报
//对的
Vector v = new Vector<Object>();//参数化类型给原始类型
//执行完上一步,引用型变量v指向Object类型
但是编译器是一步一步检查错误的所以下边的代码不会报错,但是如果你这样写
Vector<String> v2 = new Vector<Object>();就会认为类型不匹配。
注:实际上这两段小代码没有什么区别,希望对你有帮助
Vector<String> v1 = v;//原始类型给参数化类型

//和上面那两句有什么区别呢?
Vector<String> v2 = new Vector<Object>(); //出错//这是不允许的,两边类型不匹配,
复制代码

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

回复 使用道具 举报
看了大家的回答我也记起来了,泛型是在编译期起作用,为了新旧技术兼容,泛型与非泛型可相互转换,
泛型与泛型间,必须完全匹配
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马