用什么来代替
所以我查看了一些Java代码并偶然发现:
List<? extends SomeObject> l;
基本上,此列表接受所有属于SomeObject的对象-
SomeObject本身或其继承者。但是根据多态性,它的继承者也可以看作是SomeObject,因此它也可以工作:
List<SomeObject> l;
那么,为什么在第二个选项定义明确且基本相同时,有人会使用第一个选项呢?
回答:
List<SomeObject> l;
在这种情况下,您不能说List<SomeObject> l = new ArrayList<SubClassOfSomeObjectClass>;
(
)在哪里
List<? extends SomeObject> l;
你可以说
List<? extends SomeObject> l = new ArrayList<SubClassOfSomeObject>;
(
)
但是请注意,List<? extends SomeObject> l = new ArrayList<SubClassOfSomeObject>;
您
因为?代表未知课程( )。
您在评论中的问题What could I possibly do with a list if I cannot add anything
to it?
现在考虑一种情况,在这种情况下,您必须编写一个函数来打印列表,但请
。如上所述,在这种情况下,您将无法使用
public void printList(List<SubClassOfSomeObjectClass> someList)
那你会怎么做?你会做类似的事情
public void printList(List<? extends SomeObject> someList) { for(SomeObject myObj : someList) {
//process read operations on myObj
}
以上是 用什么来代替 的全部内容, 来源链接: utcz.com/qa/403643.html