有如下代码:
方法test参数是需要C类,但是因为B类继承C,所以我传B是OK的。
public class A {
public static void main(String[] args){
B b = new B();
test(b);
}
private static void test(C c){
}
}
class B extends C{
}
class C{
}
但是如下代码却不行,不理解?
import java.util.ArrayList;
import java.util.List;
public class A {
public static void main(String[] args){
List<B> b = new ArrayList<>();
test(b);
}
private static void test(List<C> c){
}
}
class B extends C{
}
class C{
}
这时候会报错:
test
(java.util.List<com.test.Extends.C>)
in A cannot be applied
to
(java.util.List<com.test.Extends.B>)
实在不理解,请大家指教。
如果我就要传集合,有什么办法吗?
参数修改为
解决你的问题。
为什么直接类可以:
这是普通的继承关系,自然没问题
为什么集合不可以:
这是类型转换,是两码事。