2

メソッドエントリブレークポイントを、Eclipse Juno(4.2)の編集不可能な(ライブラリ)クラスの合成デフォルトコンストラクターに設定するにはどうすればよいですか?

例えば

public class Foo {}  // can't change that code
//    (...)
Foo foo = new Foo()   // now it should stop
Foo bar = new Foo()  // stop again

一般的に可能ですか?

これをさらに明確にするために、クラスがロードされた後ではなく、実行時にFooのインスタンスが作成されるたびに停止したいと思います。複雑な設定では、fooまたはbarがインスタンスを作成しているかどうかを区別する必要があります。

基本的に、そのコンストラクターをコードに実際に追加することなく、非表示の合成コンストラクターのブレークポイントと同じである必要があります。

public class Foo {
  public Foo(); //break here
}

解決しました

.classファイルの場合、デフォルトのコンストラクターがアウトラインビューに一覧表示されます。メソッドエントリブレークポイントは、それを右クリックすることで追加できます。

4

5 に答える 5

1

.class ファイルの場合、通常どおり、アウトライン ビューからメソッド エントリ ブレークポイントを切り替えることができます。ソース ファイルの場合、実際にはそのようなコンストラクターを追加して、ブレークポイントを設定する必要があります。アウトライン ビューには、どちらの方法でもファイルの内容が表示されます。

于 2012-08-06T20:24:37.637 に答える
0

「publicclassFoo」の行にブレークポイントを設定できます。通常、ダブルクリックしてエディターの左側にあるマーカーバーにブレークポイントを設定する場合は、クラス宣言行をダブルクリックします。

于 2012-08-06T15:26:01.897 に答える
0

何かが足りない可能性がありますが、行にブレークポイントを設定しFoo bar = new Foo();、デバッガーが停止したらコードにステップインします(F5キーを押します)。

Fooデフォルトのコンストラクターを実際に実装するクラスを拡張する場合、デバッガーsuperは、デフォルトのコンストラクターを持つ階層の最初のクラスになります。

Fooがクラスを拡張しない場合、またはクラスのいずれにもデフォルトのコンストラクターがない場合は、単に。のインスタンス化になりますObject

于 2012-08-06T15:26:32.627 に答える
0

「#eclipse」はそれを解決するのに役立ちました。デフォルトのコンストラクターは、 .javaファイルの場合ではなく、.classファイルの場合にアウトライン ビューに表示されます。その後、メソッド エントリのブレークポイントを設定できます。

于 2012-08-06T20:24:24.243 に答える
0

初期化子を持つメンバー変数がある場合は、それらにブレークポイントを設定できます。例えば:

class MyClass {
  private int i = 0; // this line can have a breakpoint in Eclipse
}

それ以外の場合は、次の質問を参照してください: Eclipse でデフォルトの Java コンストラクターにブレークポイントを設定する方法は?

于 2012-08-06T15:32:06.820 に答える