-1

現在、予期しないエラーと思われるものに行き詰まっています。IDEとしてEclipseを使用して、Java言語でプログラミングしています。

問題の List は次のように宣言されます。

private final List<Integer> resList;

プログラムのデバッグ中に の「ウォッチポイント」機能を使用してeclipse、次のプロセスを見てきました: resListList を 2 回返した後、3 回目に返す前に、List が突然空になりました。

その問題を解決するために誰かが私に提案をしてくれたら、私はとても喜んでいますか?

コードに関しては、resList リストにアクセスし、プログラムで呼び出されるすべてのメソッドを投稿しました。

これが最初のものです:

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

そして2番目のもの:

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;
                ...
            }
    }

そして最後に、3番目のもの:

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;
    }

前もって感謝します。

4

1 に答える 1

0

ステップ 1: ctrl+alt+H を使用して resList への参照を検索し、remove、clear、removeAll を呼び出すメソッドを探します。resList を使用するメソッドが多すぎる場合は、ステップ 2 に進みます。

ステップ 2: CloudInformationServices コンストラクターにブレークポイントを設定します。ヒットすると、すべての remove、clear、removeAll メソッドで LinkedList/AbstractList (JDK 内) にブレークポイントを設定します。ブレークポイント ビューで resList を右クリックし、インスタンス ブレークポイントを選択します。remove、clear、removeAll ブレークポイントをすべて選択し、実行を続行します。これで、ブレークポイント ヒットが得られ、リストが空になっている場所を観察できます。

これ以上のコードがなければ、あなたが得ることができる助けはあまりありません。

于 2013-04-14T10:29:54.100 に答える