インスタンス変数の値を追跡したいのですが、ブレークポイントは静的メソッドから始まります。インスタンス変数の値を確認できません。それを行う方法はありますか?Googleで検索しましたが、手がかりが見つかりませんでした。
静的メソッドでインスタンスにアクセスできないからですか?
インスタンス変数の値を追跡したいのですが、ブレークポイントは静的メソッドから始まります。インスタンス変数の値を確認できません。それを行う方法はありますか?Googleで検索しましたが、手がかりが見つかりませんでした。
静的メソッドでインスタンスにアクセスできないからですか?
追跡している変数をメソッドに渡すことができます。これを行うたびにメモを取るだけですが、テストが完了したら削除できます。
しかし正直なところ、メソッド内から変数にアクセスできない場合は、複数のスレッドがない限り、メソッドを終了するまでに変更されない可能性があります。したがって、メソッドが呼び出される前後にブレークポイントを設定できます。
静的メソッドは、定義上、オブジェクトのインスタンスが作成されるまで定義されていないインスタンス変数の値にアクセスできません。
public class A {
private int b;
public static void foo() {
b = 1;
}
}
まさにこの理由でコンパイルされません。これを回避して、b 自体を静的にします。もちろん、b を static にすることの意味を理解する必要があります。これは、特定の JVM 内にクラスのインスタンスがいくつ存在しても、b のインスタンスが 1 つだけ存在することを意味します。