码迷,mamicode.com
首页 > 编程语言 > 详细

c#转Java,java中的<?><T><E>详解Jdk5.0新特性Generic Types (泛型)

时间:2015-04-15 12:57:34      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

Colleciton<Object>并不是任意类型的Collection的超类。 

那么什么是所有Colleciton类型的超类型呢?它是Collection<?>这样一个类型,读作“未知Colleciton”。它的意思是说Colleciton的元素类型可以匹配任意类型,我们把它称作通配符类型,我们这样写:

void printCollection(Colleciton<?> c){ 

for (Object e: c){

System.out.println(e);

}

}


 <? extends Class>是一种限制通配符类型,它可以接受所有<Class>以及Class的子类型。然而调用代价是,只读访问,无法向shapes中添加元素。像通常一样,使用通配符带来的灵活性将付出代价,例如,下面是不允许的: 

public void addRectangle(List<? extends Shape> shapes){

shapes.add(0,new Rectangle());//编译时错误

}

 另一方面,假定给一个List<?>,我们调用get()并且充分利用结果。结果类型是未知类型。但是我总是知道它是一个Object,因此分配一个从get()取出来的结果到一个object的变量是安全的,或者作为一个参数传递到一个需要object类型的地方。


转自http://www.cnblogs.com/langtianya/archive/2013/03/14/2959581.html

c#转Java,java中的<?><T><E>详解Jdk5.0新特性Generic Types (泛型)

标签:

原文地址:http://www.cnblogs.com/jiahuafu/p/4428060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!