Java 通过列表<;子类>;到方法期望列表<;超类>;

Java 通过列表<;子类>;到方法期望列表<;超类>;,java,list,generics,compiler-errors,subclass,Java,List,Generics,Compiler Errors,Subclass,我有一个方法需要一个列表作为参数: public void myMethod(List<SuperClass> list) {} publicsvoidmymethod(列表){ 我想用列表调用该方法,类似于: List<SubClass> subList = new ArrayList<>(); // ... myMethod(subList); // Got an argument mismatch error on this line. List

我有一个方法需要一个
列表
作为参数:

public void myMethod(List<SuperClass> list) {}
publicsvoidmymethod(列表){
我想用
列表
调用该方法,类似于:

List<SubClass> subList = new ArrayList<>();
// ...
myMethod(subList); // Got an argument mismatch error on this line.
List subList=new ArrayList();
// ...
myMethod(子列表);//此行出现参数不匹配错误。

子类扩展超类时,我不应该这样做吗?

不,泛型不是这样工作的。您可以将方法定义为
MyMethod(List值得注意的是,您还可以从子类列表中创建超类列表,如下所示:

myMethod(new ArrayList<SuperClass>(list));
myMethod(新的ArrayList(list));

你没有通过一个子类。你通过的是一个子类的列表。该列表不是另一个列表的子类。谢谢-我甚至不知道谷歌应该做什么。如果我可以的话,“扩展”btwI会对这个答案投多个赞成票。这是一个很好的解释。谢谢。谢谢大家-这是一个非常有用的解释。
myMethod(new ArrayList<SuperClass>(list));