我试图解决一个我无法理解部分答案的问题。
以下是课程BackLister:
public class BackLister {
// INSERT HERE
{
List<T> output = new LinkedList<T>();
for (T t : input)
output.add(0, t);
return output;
}
}
问题问哪个可以插入// INSERT HERE到BackLister类中编译运行没有错误?
以下是选项:
A. 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)
G. public static <? super T> List<T> backwards(List<T> input)
据我所知,A和B是正确的,对于for (T t : input)工作中的元素input应该是类型T或亚型T。
但我不明白为什么D和E选项是正确的?
我明白以下几点:
public static <T> List<? extends T> backwards(List<T> input)
意味着返回类型应该是List
的T
或 的子类T
。
public static <T> List<? super T> backwards(List<T> input)
意味着返回类型应该是List
的T
或超类T
。
有人可以帮我理解吗?
潇潇雨雨
慕神8447489
幕布斯6054654
相关分类