如果没有在java中修改它,List就会变空

时间:2013-04-14 08:46:42

标签: java list

目前,我遇到了一个意想不到的错误。 我正在用java语言编程,使用eclipse作为IDE。

有关名单的声明如下:

private final List<Integer> resList;

在调试程序时使用eclipse的“观察点”功能,我看到了以下过程: 在返回resList列表两次之后,在第三次返回之前,列表突然变空。

如果有人建议我解决这个问题,我会很高兴吗?

关于代码,我发布了访问resList列表并在程序中调用的所有方法:

这是第一个:

public CloudInformationService(String name) throws Exception {
        super(name);
        resList = new LinkedList<Integer>();
        arList = new LinkedList<Integer>();
        gisList = new LinkedList<Integer>();
    }

第二个:

public void processEvent(SimEvent ev) {
        int id = -1;  // requester id
        switch (ev.getTag()) {
                ...
                    // A resource is requesting to register.
            case CloudSimTags.REGISTER_RESOURCE:
            resList.add((Integer) ev.getData());
            break;
                ...
            }
    }

最后,第三个:

private static CloudInformationService cis;
    public static List<Integer> getCloudResourceList() {
        if (cis == null) {
            return null;
        }

        return cis.getList();// The implementation of this method is listed below
    }

    public List<Integer> getList() {
            return resList;
    }

提前谢谢。

1 个答案:

答案 0 :(得分:0)

步骤1:使用ctrl + alt + H查找对resList的引用,并查找调用remove,clear,removeAll的方法。如果使用resList的方法太多,请转到步骤2。

步骤2:在CloudInformationServices构造函数中设置断点,在命中时,在LinkedList / AbstractList(在JDK中)中设置所有remove,clear,removeAll方法中的断点。在断点视图中,右键单击resList并选择实例断点。选择所有删除,清除,删除所有断点并继续执行。现在,您将获得一个断点,并可以观察列表被清空的位置。

如果没有更多的代码,我恐怕没有多少帮助。