黑马程序员技术交流社区

标题: List<?>和List<Object>的区别 [打印本页]

作者: 张志阳    时间: 2012-4-9 08:57
标题: List<?>和List<Object>的区别
List<?>中?是通配符,那就意味着可以匹配各种对象,List<Object>中各种对象都是Object的子类,那这两各形式有什么不同呢?
作者: 宋蕈    时间: 2012-4-9 09:07
T 代表某一类型 ? 代表任意类型。。

Object因为代表是Object的子类。。所以你可以使用它。。
比如你有个List<Object>类型的变量tList 你可以用Object t = tList.get(1);也可以用add但是‘?’可以是任意类型。。你不能进行那种与他里面装的东西的类型有关的操作。。比如add  get等。。其中get只能复制给object类型。add甚至连object都不能用。。因为他可以是任意类型。。编译器不能确定他是什么类型。。
但前者编译器知道他的类型是Object。。

我说的是调用List里的get 和add方法
作者: 翟友伟    时间: 2012-4-9 09:08
个人觉得使用上没什么区别,只不过一个用了泛型
泛型只是在编译时起作用,限定元素类型
运行时是没有泛型信息的。
也就是说:源文件当中的List<Object>和List<String>被javac编译器编译完成以后,jvm在运行时看到的都只是List。
作者: 王运科    时间: 2012-4-9 09:17
泛型等于是一种数据结构或一个函数可用在多种类型的对象上。
如果在调用或声明创建一个泛型函数或结构时指定了类型,那么后续操作产生的结果将直接是你指定的类型。不必再进行转型操作了
作者: pray    时间: 2014-4-26 07:08
好得不能再好的好帖




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