宣言自体は実際には実行可能なコードではなく、何かの存在を宣言しているだけです。実際に何かを行う2行目にブレークポイントを配置できるはずです。
確かに、IDE が実行可能でない行にブレークポイントを追加するという概念をサポートすべきではない理由はわかりません。おそらく、実行環境内の実行可能ポイントにブレークポイントを実際にインストールする必要があるでしょう...
編集:私が何を意味するかを明確にするために、このコード:
public void foo() {
String a;
String b;
a = "hello";
b = " world";
System.out.println(a + b);
}
以下と同じバイトコードにコンパイルされます。
public void foo() {
String a;
a = "hello";
String b;
b = " world";
System.out.println(a + b);
}
宣言のためにコードを実行する必要はありません。その時点でスペースを予約することはありません。コンパイラはメソッドのスタック空間内に「スロット」を割り当て、メソッド全体でそのスロットを使用しますが、変数がループ内で宣言されている場合でも、追加の初期化なしで同じスロットを再利用できます。