Java 在arraylist内部强制转换时出错

Java 在arraylist内部强制转换时出错,java,arraylist,Java,Arraylist,我有三节课 public abstract class Animal { ... } public abstract class Cat extends Animal { ... } public abstract class Dog extends Animal { ... } 如果我想创建一个包含猫和狗的动物数组列表,它会给出运行时投射错误 List<Animal> animals = new ArrayList<>(); List<

我有三节课

public abstract class Animal {
    ...
}

public abstract class Cat extends Animal {
    ...
}

public abstract class Dog extends Animal {
    ...
}
如果我想创建一个包含猫和狗的动物数组列表,它会给出运行时投射错误

List<Animal> animals = new ArrayList<>();
List<Cat> cats = new ArrayList<>();
List<Dog> dogs = new ArrayList<>();

animals.add((Animal) cats);
animals.add((Animal) dogs);
List animals=new ArrayList();
列表猫=新的ArrayList();
List dogs=new ArrayList();
动物。添加((动物)猫);
动物。添加((动物)狗);

如何创建此阵列列表?

您的角色设置错误。在适当的条件下,您试图分配一些不兼容的内容

animals.add((Animal) cats);
当你说
(动物)猫
时,你试图将
列表
投射到
动物
,这是错误的


如果它将
cats
中的所有元素添加到
animals
中,则可以使用
animals进行添加。addAll(cats)
您的角色设置错误。在适当的条件下,您试图分配一些不兼容的内容

animals.add((Animal) cats);
当你说
(动物)猫
时,你试图将
列表
投射到
动物
,这是错误的

如果要将
cats
中的所有元素添加到
animals
中,您可以使用
animals进行添加。addAll(cats)
“add”只添加一个元素(而不是列表)。您希望在列表中添加所有元素,因此需要使用
addAll()

List animals=new ArrayList();
列表猫=新的ArrayList();
List dogs=new ArrayList();
动物。addAll(猫);
动物。addAll(狗);
“添加”只添加一个元素(但不是列表)。您希望在列表中添加所有元素,因此需要使用
addAll()

List animals=new ArrayList();
列表猫=新的ArrayList();
List dogs=new ArrayList();
动物。addAll(猫);
动物。addAll(狗);

您正试图添加一个
列表
作为
列表
的一个元素。你的意思是说你使用了
addAll
?你正在将
列表
投射到
动物
列表
不是
动物
。您正在尝试将
列表
添加为
列表
的元素。你的意思是说你使用了
addAll
?你正在将
列表
投射到
动物
列表
不是
动物