我有一个返回Objects的ArrayList的方法。我返回创建的arraylist,并填充了许多对象,我通过相同的方法打印它们来检查它们是否在那里。当我在另一个方法中使用该Arraylist作为参数时,它会给我一个错误,就像arraylist是空的一样。
让对象说它的位置(y,x),方法是getFila和getColumna。 失败的方法(实际上什么都不做):
public static ArrayList<Position> getTrayectory (ArrayList<Position> aListPos){
for (int ii = 0; ii < aListPos.size();ii++ ) {
System.out.println("(" + aListPos.get(ii).getFila() + "," + aListPos.get(ii).getColumna()+")");
}
return aListPos;
}
我回复了Arraylist里面有很多物品,但我不知道发生了什么事。
要点:
1- I have a method that returns an ArryList
2- I create a new Arraylist with method in 1
3- I use new method with Arraylist in 2 as parameter.
(4-) Nothing happens, because new arraylist in 2 look empty.
任何人都可以帮助我吗?
答案 0 :(得分:3)
如果您使用像eclipse这样的IDE,您可以轻松地在有问题的代码中插入断点,并且可以“观察”每个变量的内容。
所以你可以找到你的arraylist空洞的确切位置。
答案 1 :(得分:1)
我认为您的ArrayList包含Position对象。我完全不知道它只是我的猜测。
System.out.println("(" + aListPos.get(ii).getFila() + ","
+ ListPos.get(ii).getColumna()+")");
相反。试试这个
System.out.println("(" + (aListPos.get(ii)).getFila() + ","
+ (ListPos.get(ii)).getColumna()+")");
答案 2 :(得分:1)
如果要在提供它的(看不见的)方法中创建ArrayList,是否要返回它?或者您正在修改参数?
换句话说,你这样做了吗?
ArrayList<Position> myArrayList = generateArrayList(); // or whatever you call it
或者你是这样做的:
ArrayList<Position> myArrayList;
generateArrayList(myArrayList);
ArrayList<Position> result = getTrayjectory(myArrayList);
第二个版本不起作用,因为当你在方法中创建一个对象时,它可以逃脱方法边界的唯一方法是由该方法返回。否则,当方法结束时,它将超出范围。