【发布时间】:2009-05-18 22:05:23
【问题描述】:
以下是来自 Kathy & Bert Bates SCJP 5 准备 CD 的问题。我也在其他地方发布了这个,但直到现在还没有得到令人满意的解释......请帮助我理解这一点:
public class BackLister {
//Insert code here
{
List<T> output=new LinkedList<T>();
for(T t:input)
output.add(0,t);
return output;
}
}
以下哪项可以插入//Insert code here?
-
一个。
public static <T> List<T> backwards(List<T> input) -
B。
public static <T> List<T> backwards(List<? extends T> input) -
C。
public static <T> List<T> backwards(List<? super T> input) -
D。
public static <T> List<? extends T> backwards(List<T> input) -
E。
public static <T> List<? super T> backwards(List<T> input) -
F。
public static <? extends T> List<T> backwards(List<T> input)
我了解 A 和 B 是正确的;但是,不是为什么 D 和 E 也是正确的。我可以看到 C 和 F 也不正确。谁能告诉我为什么 D 和 E 是正确的。
【问题讨论】:
-
据我所知,所有的答案都是一样的。我错过了什么吗?
-
看起来 SO 没有正确转义小于(或与号)字符。我认为缺少的部分是通用声明。
-
您在其他地方发布了这个问题吗?不,你有一个完全相同的副本,stackoverflow.com/questions/858656/java-polymorphism-confusion
-
@MasterPeter:同一本书,不同的问题。
-
是的,这是另一个问题 MasterPeter!
标签: java generics collections polymorphism