0

我有一个返回对象的 ArrayList 的方法。我返回创建的arraylist,它填充了许多对象,我通过以相同的方法打印它们来检查它们是否存在。当我在另一种方法中使用该 Arraylist 作为参数时,它会给我一个错误,就像 Arraylist 为空一样。

让我们用 getFila 和 getColumna 方法说对象的 Position(y,x)。而失败的方法(实际上什么都不做):

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.

任何人都可以在这个过程中帮助我吗?

4

3 回答 3

3

如果您使用 Eclipse 之类的 IDE,您可以轻松地在有问题的代码中插入断点,并且可以“观察”每个变量的内容。

所以你可以找出你的数组列表变空的确切点。

于 2012-12-19T01:22:43.233 回答
1

我认为您的 ArryList 包含 Position 对象。我不知道具体所以这只是我的猜测。

       System.out.println("(" +  aListPos.get(ii).getFila() + "," 
       + ListPos.get(ii).getColumna()+")");

反而。尝试这个

       System.out.println("(" +  (aListPos.get(ii)).getFila() + "," 
       + (ListPos.get(ii)).getColumna()+")");
于 2012-12-19T02:32:22.010 回答
1

如果您在提供它的(看不见的)方法中创建 ArrayList,您会返回它吗?还是您正在修改参数?

换句话说,您是否这样做:

ArrayList<Position> myArrayList = generateArrayList(); // or whatever you call it

或者你正在这样做:

ArrayList<Position> myArrayList;
generateArrayList(myArrayList);
ArrayList<Position> result = getTrayjectory(myArrayList);

第二个版本不起作用,因为当您在方法内创建对象时,它可以逃脱方法边界的唯一方法是由该方法返回。否则,当方法结束时,它会超出范围。

于 2012-12-19T02:46:50.443 回答