IntelliJ IDEA 2026.1 Help

チュートリアル: 値の設定

このチュートリアルでは、最も基本的ではありますが非常に便利なデバッガー機能の 1 つである 値の設定 の使用方法を学習します。

デバッグ中に、プログラムが特定の方法で動作する理由を理解するために変数に関する情報を取得し、調べます。 また、変数に依存するバグを再現したい場合もあります。 これを行うには、この変数に特定の値を保持する必要があります。

実行時にプログラムを変更せずに一部の条件を再現するのは退屈で時間がかかる場合があるため、ほとんどの場合、デバッガーから直接変数値を設定することでメリットが得られます。

問題

次の簡単なプログラムを見てみましょう。

import java.util.*; class Aquarium { private ArrayList<Fish> fish; public static void main(String[] args) { var aquarium = new Aquarium(); System.out.println(aquarium.getFish()); // fish has already been initialized System.out.println(aquarium.getFish()); // line n1 } private ArrayList<Fish> getFish() { if (fish == null) initFish(); return fish; } private void initFish() { fish = new ArrayList<>(Arrays.asList( new Fish("Bubbles"), new Fish("Calypso"), new Fish("Dory") )); } } class Fish { private String name; Fish(String name) { this.name = name; } public String toString() { return name; } }

このコードには、インスタンス変数 fish が 2 回出力されています。 これは遅延初期化を採用しており、この場合、getter が呼び出されるまでフィールドに値が割り当てられないことを意味します。

すでに line n1 までステップ実行し、 fish がすでに初期化されているが、 initFish メソッドを調べたい場合を考えてみましょう。 このメソッドは、 (fish == null)true に評価される場合にのみ実行され、 line n1 ではもはや当てはまりません。

この単純なプログラムでは、セッションを再開するだけで済みます。 ただし、より複雑なケースでは、セッションを再起動して特定の状態に至る手順を再現するのは非常に不便です。 よりスマートな方法を学びましょう。

ソリューション

  1. 問題文によれば、プログラムを line n1 で一時停止します。

    プログラムは main() メソッドの最後の行である n1 行目で中断されます
  2. getFish() メソッドにブレークポイントを設定します。

    getFish() メソッドのブレークポイント
  3. 変数 タブで、 aquarium を展開し、 fish を右クリックして、 値の設定 を選択します。

    変数タブの「魚」リスト
  4. null と入力します。 Enter を押します。

    「魚」フィールドを null に設定する
  5. F9 を押して、デバッガーセッションを再開します。

ここで条件は true と評価され、もう一度 initFish メソッドに入り、初期化がどのように実行されるかを確認できます。

要約

このシナリオでは、実行時に変数を変更してプログラムのフローを変更する方法を説明します。 この例は非常に単純ですが、より複雑なプロジェクトにも同じ原理を適用でき、この機能によって多くの時間を節約できます。

2026 年 3 月 30 日