黑马程序员技术交流社区

标题: List<?>和List<Object>的用法有什么不同 [打印本页]

作者: 刘忠德    时间: 2011-12-26 15:44
标题: List<?>和List<Object>的用法有什么不同
本帖最后由 刘忠德 于 2011-12-27 07:24 编辑

一直不太理解List<?>和List<Object>,?是通配符,那就意味着可以匹配各种对象,而各种对象都是Object的子类,那这两各形式有什么不同呢?
作者: 杨扬    时间: 2011-12-26 16:13
参数化类型不考虑类型参数的继承关系
就好比 Vector<String> v = new Vector<Object>(); 或者Vector<Object>() v = new Vector<String>();是错误的
作者: yunqiangshan    时间: 2011-12-26 18:38
本帖最后由 yunqiangshan 于 2011-12-26 18:39 编辑

public static void method(List<?> li)
用通配符不能定义具体类型对象,而List<Object>,可以定义具体类型对象,并且创建对象,Object obj,这样在方法体内就能进行相应的操作。
public static <Object> void method(List<Object> li)
{          Iterator<Object> it=li.iterator();
            while(it.hasNext())
               {       Object obj=it.next();
                        System.out.println(obj);}
用通配符的话就做不了这样动作,当然要是用增强for循环也是可以完成上面的动作的

作者: 1253431283    时间: 2011-12-26 20:49
泛型等于是一种数据结构或一个函数可用在多种类型的对象上。
如果在调用或声明创建一个泛型函数或结构时指定了类型,那么后续操作产生的结果将直接是你指定的类型。不必再进行转型操作了例如比如Math.abs。
作者: 刘忠德    时间: 2011-12-27 07:24
谢谢大家的回复~~




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