黑马程序员技术交流社区
标题:
a = b; c = a; 和 c直接等于b有什么区别呢?
[打印本页]
作者:
夏德宇
时间:
2014-1-9 12:58
标题:
a = b; c = a; 和 c直接等于b有什么区别呢?
本帖最后由 夏德宇 于 2014-1-9 21:16 编辑
//对的
Vector v = new Vector<Object>();
Vector<String> v1 = v;
//和上面那两句有什么区别呢?
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