对于Java来说不是新手,但是这个问题困扰着我。我认为我没有扎实的基础。

假设有ABCB extends AC extends A类。我的问题是,如何定义方法f(),使其可以使用List<A>List<B>List<C>中的一个作为参数?

最佳答案

使用上限通配符:

f(List<? extends A> list)

有关更多信息,请参见Oracle's tutorial

注意,这限制了您只能从方法主体的列表中删除内容。您不能在列表上调用使用者方法:
A item = list.get(0);  // OK.
list.add(new A());     // Not OK! list might be a List<B>.

07-24 09:49
查看更多