[解決済み] IntelliJの「ウォッチ」とは何か、どう使うのか?
質問内容
アプリをデバッグすると、デバッグツールウィンドウに ウォッチウィンドウ . このマニュアルを何度も読み返しましたが、Watchesの実用的な使い方を見つけることができません。
なぜか、これはクールで便利なツールだと思うのですが、使わないでいると物足りないです。
どなたか、どのような場合に使うべきか、いくつかのサンプルを挙げて説明していただけませんか?理想は、具体的な(想像上の)状況に結びついた説明で、自分の仕事にうまく適用できるようにすることです。
どのように解決するのですか?
このセクションでは、利用可能なすべてのオブジェクトとそのプロパティを手動で検査することなく、デバッグプロセスの各ステップでそれらがどのように進化/変化するかを確認したい式を定義することができます。NullPointerException (NPE) を意図的に投げる、次の簡単なサンプルを見てみましょう。
public class WatchSample {
static class Student {
public static final int CREDITS_REQUIRED_FOR_GRADUATION = 10;
private String name;
private Integer credits;
public Student(String name, Integer credits) {
this.name = name;
this.credits = credits;
}
String getName() {
return name;
}
public boolean hasGraduated() {
return credits >= CREDITS_REQUIRED_FOR_GRADUATION;
}
public Integer getCredits() {
return credits;
}
}
public static void main(String[] args) throws Exception {
List<Student> students = simulateReadingFromDB();
for (Student student : students) {
if (student.hasGraduated()) {
System.out.println("Student [" + student.getName() + "] has graduated with [" + student.getCredits() + "] credits");
}
}
}
private static List<Student> simulateReadingFromDB() {
List<Student> students = new ArrayList<>(3);
students.add(new Student("S1", 15));
students.add(new Student("S2", null)); // <- simulate some mistake
students.add(new Student("S3", 10));
return students;
}
}
ある時点で、なぜNPEが発生するのか、何を修正する必要があるのか、と思うかもしれません。そこで、ブレークポイントを設定し、いくつかのウォッチを追加して、注意深く行をたどってみてください。最終的には、トラブルメーカーが見えてくるはずです。
もちろん、これは基本的な例なので、そのように受け止めるべきです。通常のアプリでは、おそらくもっと複雑なシナリオや検査したい表現があるはずで、例えばこのような表現はもっと意味があるはずです。
if (((position > 0 && position < MAX) || (position < 0 && position > MIN) && (players(currentPlayer).isNotDead() && move.isAllowed()) && time.notUp())....
. この場合、副式を評価して、どれが偽を返すかを確認することができます。
**注**: 特定のイベントが発生したときだけプログラムが一時停止するように、ブレークポイントを条件付きにすることもできます。
関連
-
[解決済み] IntelliJでプロジェクトフォルダが表示されない
-
[解決済み] Error:java: invalid source release: Intellijでは8です。これはどういう意味ですか?
-
[解決済み] IntelliJ: ワイルドカード・インポートを使用しない
-
[解決済み] IntelliJからjarを正しくビルドする方法は?
-
[解決済み] IntelliJ editorのUnlimited whitespaceをオフにするにはどうしたらいいですか?
-
[解決済み] IntelliJ IDEAを使用して未使用のコードをすべて見つけるにはどうすればよいですか?
-
[解決済み] IntelliJ IDEAでメソッド/関数を検索するためのショートカットは何ですか?
-
[解決済み] IntelliJ IDEAの検索からファイル拡張子を除外する方法を教えてください。
-
[解決済み] Intellijで重複コード検出を無効にすることは可能ですか?
-
[解決済み] IntelliJでformatterにコードをラップさせるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】IntelliJがMavenプロジェクト用のJunitを解決できない
-
[解決済み] Intellij - 新しいJava 8クラスが使用できない - エラー : "@since 1.6+ としてドキュメント化されたAPIの使用...".
-
[解決済み] IntelliJ IDEAでGroovy SDKを設定する
-
[解決済み] ライブラリのソースがクラスのバイトコードと一致しない
-
[解決済み] IntelliJ IDEAは、WebStormやPHPStormの全機能をプラグインでカプセル化できますか?[終了しました]。
-
[解決済み] IntelliJ IDEAでファイルの末尾に毎回改行を挿入するには?
-
[解決済み】Intellij IDEAでエディタへのショートカットにジャンプする
-
[解決済み】PhpStormのワードラッピングについて
-
[解決済み] IntelliJ IDEAの出力ウィンドウが出力をカットする [重複]。
-
[解決済み] Intellijで重複コード検出を無効にすることは可能ですか?