可能重複:
IsList<Dog>
a subclass ofList<Animal>
? Why aren't Java's generics implicitly polymorphic?鑄基類列表以子類List
我有類狗延伸動物和具有的列表的列表以下類型。
ArrayList<Animals> animal = new ArrayList<Animals>();
現在我有另一個類,小狗,它擴展了狗。
而且有List<Puppy> puppy = new ArrayList<Puppy>();
現在我想演員名單animal
到puppy
。是否可以直接做?
我可以這樣做,如下所示。
for (Animals ani: animal){
puppy.add((Puppy) ani)
}
但我想要一個直接的鑄造解決方案。可能嗎?
定義 「直接鑄造解決方案」? –
如果你有一個實際上是狗的動物列表,並且你想要處理狗而不是動物,那麼爲什麼你的列表是一個動物列表? –
繼Vakimshaar的評論之後,如果你的代碼需要很多這樣的危險轉換(可能會導致異常),那麼你應該重新考慮你的代碼。例如。不要像這樣添加小狗,請調用Animal類中的方法,將它們添加到適當的列表中...爲每個子類重寫該方法 –