错误类型不匹配:无法转换

时间:2014-04-10 05:42:51

标签: java android arraylist

请帮帮我。我是学生。 我有抽象的class AClass A1 extends A。 如果我写

ArrayList<A> a = ArrayList<A1> a1

我收到错误

Type mismatch: cannot convert from ArrayList<A1> to ArrayList<A>

2 个答案:

答案 0 :(得分:1)

您无法使用TypeErasureArrayList<A1>投射到其他类型ArrayList<A>,因此我建议您尝试在java中使用WildCard来解决此问题

ArrayList<? extends A1>a1=new ArrayList<A1>();
     ArrayList<? extends A1> a =  a1;

答案 1 :(得分:-1)

在以下a列表声明中,

ArrayList<A> a

类型规则说a列表只能包含精确A类型的对象:例如,它不能包含任何其他类型的类型对象,它扩展了超类型A

要解决此问题,您可以使用Bounded Wildcards,如下所示......

ArrayList<? extends A> a = a1

现在a列表将接受A的任何子类的列表。在这里,?代表未知类型,但这种未知类型实际上是Shape的子类型。 (注意:它可能是A本身,或者是某个子类;它不需要字面上扩展A)。