私は定期的に Eclipse デバッガーを使用していますが、これは常に IDE について私を悩ませてきました。ステップ フィルタリングは非常に貴重なツールです。そのため、ソース コードを持たないクラスや単純に興味のないクラスに足を踏み入れることはありません。ただし、ほとんどの場合、Eclipse は正しく機能しません。特に、「単純なゲッターをフィルター処理する」および「単純なセッターをフィルター処理する」オプションがあります。
メンバー変数の値を単に返すゲッターを使用する場合があります。
private String value;
public String getValue()
{
return value;
}
あるいは、高価なオブジェクトを遅延してインスタンス化するゲッターかもしれません。
private IObjectFactory instance;
public IObjectFactory getInstance()
{
if (instance == null)
instance = ObjectFactory.createFactory();
return instance;
}
メンバー変数の値を設定するだけのセッターを使用する場合があります。
private String value;
public void setValue(String value)
{
this.value = value;
}
流暢な構文をサポートしたいかもしれません。
private String value;
public ObjectFactory setValue(String value)
{
this.value = value;
return this;
}
または、何らかの検証やイベントのトリガーを行うこともできます。
private String user;
public void setUser(String user)
{
if (StringUtils.isBlank(user))
throw ExceptionHelper.argumentNull("user");
this.user = user;
}
private String title;
public void setTitle(String title)
{
if (!StringUtils.equals(this.title, title))
{
this.title= title;
onPropertyChanged("title", title);
}
}
そして、これらの用途のすべてについて、Eclipseを使用してコードにステップインすると、これらのメソッドにステップインします...
Eclipse は何を「単純なゲッター」または「単純なセッター」と見なしますか?
フィルターは確実に有効になっています。
念のために言うと、私は Eclipse Kepler ビルド 20130614-0229 を使用しています。JRE6 を使用して Eclipse を実行し、Tomcat 7 サーバーで Java 1.4 Web アプリをホストしています。最終的には 1.4 をターゲットにしていますが、これは JDK6 を使用してローカルでコンパイルされているため、問題があるとは考えていません。JRebel をインストールして使用していますが、おそらくクラスローダーが、何が「単純」と見なされるかを決定するアルゴリズムに干渉していますか? 「フィルターをステップスルーする」オプションを有効にして組み合わせると、おそらく私のコードをステップスルーしています。これについて考えた後、さらに実験します。