Java将类扩展为函数参数

Yi *_*Luo 3 java

对java来说并不陌生,但这个问题困扰着我.我想我没有坚实的基础.

比方说,有类A,B,CB extends AC extends A.我的问题是,我如何定义一个方法,f()以便它可以采取其中一个List<A>,List<B>List<C>作为参数?

And*_*ner 6

使用上限通配符:

f(List<? extends A> list)
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Oracle的教程.

请注意,这限制了您只能从方法体中的列表中取出内容; 你不能在列表上调用消费者方法:

A item = list.get(0);  // OK.
list.add(new A());     // Not OK! list might be a List<B>.
Run Code Online (Sandbox Code Playgroud)