黑马程序员技术交流社区

标题: a = b; c = a; 和 c直接等于b有什么区别呢? [打印本页]

作者: 夏德宇    时间: 2014-1-9 12:58
标题: a = b; c = a; 和 c直接等于b有什么区别呢?
本帖最后由 夏德宇 于 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>(); //出错
复制代码

作者: daoyua    时间: 2014-1-9 13:42
类型不对哦,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了,所以左右类型不同赛
作者: daoyua    时间: 2014-1-9 13:48
有不足请楼下面补充{:soso_e117:}
作者: 娟5子    时间: 2014-1-9 13:50
上面没有语法错误 可能是转型  下面两句前后两个尖括号内容不一样是不是有语法错误啊
作者: IT人    时间: 2014-1-9 15:16
//对的
Vector v = new Vector<Object>();//参数化类型给原始类型
//执行完上一步,引用型变量v指向Object类型
但是编译器是一步一步检查错误的所以下边的代码不会报错,但是如果你这样写
Vector<String> v2 = new Vector<Object>();就会认为类型不匹配。
注:实际上这两段小代码没有什么区别,希望对你有帮助
Vector<String> v1 = v;//原始类型给参数化类型

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


作者: 午夜b'Boy    时间: 2014-1-9 18:18
看了大家的回答我也记起来了,泛型是在编译期起作用,为了新旧技术兼容,泛型与非泛型可相互转换,
泛型与泛型间,必须完全匹配




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