对java来说并不陌生,但这个问题困扰着我.我想我没有坚实的基础.
比方说,有类A,B,C和B extends A和C extends A.我的问题是,我如何定义一个方法,f()以便它可以采取其中一个List<A>,List<B>并List<C>作为参数?
使用上限通配符:
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)