黑马程序员技术交流社区

标题: 泛型通配符的问题 [打印本页]

作者: 房建斌    时间: 2014-3-15 22:43
标题: 泛型通配符的问题
本帖最后由 房建斌 于 2014-3-15 22:46 编辑

使用泛型通配符时,如下书写,为什么会报错:
  1. HashSet<?> set = new HashSet<?>();
复制代码

Cannot instantiate the type HashSet<?>。
请高手解答。
new HashSet()必须是一个具体的类型,并不能是一个通配符。

作者: bigbean    时间: 2014-3-15 23:07
你必须指定明确的范围,例如<?extends Person>或者<?super Person>
作者: 房建斌    时间: 2014-3-15 23:29
bigbean 发表于 2014-3-15 23:07
你必须指定明确的范围,例如或者

你这种方法是不可以的,必须指明确定的类型。。。不能用通配符
作者: bigbean    时间: 2014-3-15 23:31
房建斌 发表于 2014-3-15 23:29
你这种方法是不可以的,必须指明确定的类型。。。不能用通配符

;P 你是自问自答么?;P;P
作者: 李猛    时间: 2014-3-16 08:27
我见到的泛型在hashset<>貌似都是一个指定的类型,直接这样hashset<通配符>,貌似不可以
作者: SyouRai_Tsk    时间: 2014-3-16 10:08
我在想,如果能用上通配符,那这个泛型就不如写Object类型不是更好
例如Set<Object> sets=new HashSet<Object>()
所以,通配符这里是不能用的
HashSet<T> hs=new HashSet<T>() 这个T就相当于是通配符的概念
但是,楼主,泛型的出错就是为了统一数据格式,在效率上就省去了拆箱装箱.效率上去了




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