Java 试图将ArrayList转换为Array,但IDE;找不到符号“;

Java 试图将ArrayList转换为Array,但IDE;找不到符号“;,java,arraylist,Java,Arraylist,我有一个动物物品的列表: ArrayList<Animal> animals = new ArrayList<Animal>(); animals.add(new Animal(1, "animal1", 50, "10 Janvier 2016", "Noir", 4, true)); animals.add(new Animal(2, "animal2", 40, "10 Janvier 2016", "Noir", 4, true)); 但是我的IDE说他找不到动

我有一个动物物品的列表:

ArrayList<Animal> animals = new ArrayList<Animal>();
animals.add(new Animal(1, "animal1", 50, "10 Janvier 2016", "Noir", 4, true));
animals.add(new Animal(2, "animal2", 40, "10 Janvier 2016", "Noir", 4, true));
但是我的IDE说他找不到动物的符号

如何将ArrayList中的动物转换为数组

编辑:我认为我的问题与方法本身无关,更多的是我的类中的代码结构。

使用这个

public static Animal[] toArray(ArrayList<Animal> animals){
    return animals == null ? null : animals.toArray(new Animal[animals.size()]);
}
publicstaticanimal[]toArray(arraylistanimals){
return animals==null?null:animals.toArray(新动物[animals.size());
}

您正在尝试将局部变量转换为实例方法内的数组。这是行不通的,因为局部变量对于声明它们的方法或构造函数来说是局部的

您需要执行以下操作之一:

  • 声明一个字段
    private List animals=new ArrayList()并删除
    动物
    局部变量,或
  • 声明一个数组字段
    private Animal[]animalArray
    ,并在将
    animals
    设置为本地后立即分配它;然后getter将返回一个alsarray

@CubeJockey不同:OP尝试做其他事情。我认为代码是正确的(使用toArray);我遇到的问题是关于变量识别。您的IDE找不到
动物
,很可能您已将其声明为超出范围。它是一个类变量吗?@CubeJockey是的,但它是一个局部变量。不要对答案进行代码转储,它会帮助任何人从错误中吸取教训。至少给出一些解释这也不会解决OPs问题谢谢;我知道我的ArrayList的主要功能以外的动物。但是我的函数Animal[]toArray(){return animals.toArray();}仍然不是functional。也许你知道我错过了什么?我有一个错误“不兼容的类型”@AodRen不兼容的类型可以通过
animals.toArray(新动物[animals.size()])修复。
public static Animal[] toArray(ArrayList<Animal> animals){
    return animals == null ? null : animals.toArray(new Animal[animals.size()]);
}