Cast the sub class List to base class List
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
IsList a subclass ofList ? Why aren't Java's generics implicitly polymorphic?
我有一个扩展动物的类狗列表,并有以下类型的列表。
1 | ArrayList<Animals> animal = new ArrayList<Animals>(); |
现在我又上了一门课,小狗,它能延伸狗的长度。
有一个
现在,我想把清单
我可以这样做。
1 2 3 | for (Animals ani: animal){ puppy.add((Puppy) ani) } |
但我想要一个直接铸造的解决方案。有可能吗?
不,除非您将第一个列表定义为:
1 | List<? extends Animals> animal; |
然后你就能做到:
1 2 | List<Puppy> puppy = new ArrayList<Puppy>(); animal = puppy; |
首先,您必须在基类中将列表定义为…
1 | public ArrayList<? super Animal> ani; |
然后将扩展类中的基类列表强制转换为…
1 2 3 | ArrayList<? extends Animal> puppy= new ArrayList<Puppy>(); puppy= (ArrayList<? extends Animal>)ani; List<Puppy> castPuppy = (List<Puppy>)puppy;//here we case the base class list in to derived class list. |
注意:它可能通过未选中的异常