class A {}
class B extends A{}
class C extends B{}
public class Test {
public List<? extends B> ring(){
return ???
}
}
请告诉我,以下哪个方法可以合法返回方式环()?
return new ArrayList<B>();
return new ArrayList<C>();
return new ArrayList<A>();
return new ArrayList<? extends B>();
return new LinkedList<B>();
return new PriorityQueue<B>();
return new ArrayList();
答案 0 :(得分:1)
您的功能正在返回List<? extends B>
,因此请在下方找到有效选项:
return new ArrayList<B>();
有效:因为任何类都是自己的子类和超类return new ArrayList<C>();
有效,因为C
正在展开B
return new ArrayList<A>();
无效,因为A
未展开B
return new LinkedList<B>();
有效:因为List
是LinkedList
的超级return new PriorityQueue<B>();
无效,因为PriorityQueue
不是列表。return new ArrayList();
有效:并发出警告。答案 1 :(得分:0)
你应该问“什么是有效的退货声明?”其中大部分都有效。那些没有的是:
答案 2 :(得分:0)
由于您必须返回B列表,因此允许使用第一个和第二个。
第三个不是,因为A IS-A B不是真的; A不会延长B.
第四个对我没有意义。
第五个很好,因为LinkedList IS-A List。
第六个不起作用,因为PriorityQueue没有实现List。
第七个没关系,但编译器可能会警告你。它的类型安全性较低,这就是泛型。