黑马程序员技术交流社区
标题:
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