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
设置为本地后立即分配它;然后getter将返回一个alsarrayanimals
动物
,很可能您已将其声明为超出范围。它是一个类变量吗?@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()]);
}