【发布时间】:2013-07-02 07:56:48
【问题描述】:
我想知道为什么以下代码不起作用:
Collection <? super String> col = new ArrayList<String>();
col.add(new Object());// does not compile
col.add("yo!");// compiles indeed;
如果类型是<? super String>,它可以包含String 的超级元素(包括字符串)不是吗?
【问题讨论】:
-
<? super String>只能添加字符串。Object不能是字符串。尝试这样做:Object myObj = new String();,它应该可以工作。 -
不,任何扩展字符串。这意味着?其超级是字符串.
-
@m0skit0 这就是我感到困惑的地方。谢谢。
-
@m0skit0 Ops.. 为什么如果我再尝试做
<? super String> col = new ArrayList<Object>();它编译!但是对象不扩展字符串!这些泛型.. -
对不起,我的错,请参阅 Marko 的回答。
标签: java generics collections