所以我有两节课。类B
扩展类A
。我正在创建一个ArrayList
包含类型的对象B
,所以列表是类型的ArrayList<B>
。我想ArrayList
在useList
输入参数类型为ArrayList<A>
. 按理说,既然B
是 的子类A
,它可以在任何地方使用A
,包括在这个应用程序中。
但是,编译器似乎不喜欢这样(请参阅下面代码中的错误消息)。ArrayList<B>
在将它传递给方法时,我也尝试ArrayList<A>
将其转换为,但那个也不起作用。
代码:
public class Test {
private class A { }
private class B extends A { }
public static void useList(ArrayList<A> aList) { }
public static void main(String[] args) {
ArrayList<B> bList = new ArrayList<B>();
/* "The method test(ArrayList<Test.A>) in the type Test
* is not applicable for the arguments (ArrayList<Test.B>)" */
useList(bList);
/* "Cannot cast from ArrayList<Test.B> to ArrayList<Test.A>" */
useList((ArrayList<A>)bList);
}
}
毫无疑问,我在做一些愚蠢的事情,所以任何建议都将不胜感激!
谢谢!