私は、ほぼ 50 のクラスが同じ親クラスを拡張するプロジェクトを持っています。現在、親クラスに抽象メソッドを追加しています。このため、すべてのクラスでコンパイル時エラーが発生します。この状況で、Eclipse IDE で一発ですべてのサブクラスにこのメソッドを追加する方法はありますか?
5 に答える
これらの 50 のクラスのそれぞれで、何か意味のある (そして異なる) ことをする必要はありませんか? そうでない場合は、実装を親クラスに配置する必要があります。もしそうなら、この場合、あらゆるタイプの「すべてを迅速に修正する」ことは非生産的です。基本的に、Eclipse やその他の IDE があなたの要求を実行した場合、小さなプログラミング タスクを大きなテスト/QA タスクに変更することが基本的に推奨されます。
記録のために、この他の答えはよりエレガントに述べられていると思います。
「パッケージエクスプローラーでトップレベルのパッケージを選択します。「問題」ビューに移動します。「タイプFooは継承された抽象メソッドParent.foo()を実装する必要があります」というエラーのリストがあるはずです(特定のクラス/メソッド名について) ). エラーを右クリックし、[クイック修正] を選択します. [実装されていないメソッドを追加] オプションを選択し、[すべて選択] ボタンをクリックしてすべての子クラスを選択できます. 編集: これは、親クラスごとに複数のメソッドに対しても機能します. ." 以下のリンクからコピーして動作します
50の異なる実装がある場合、いくつかの深刻な設計上の問題が発生する可能性があると思います。
すべてのクラスに同じコードを配置したい場合は、コンパイラが文句を言わないように、抽象コードに実装を提供する必要があります。それ以外の場合は、すべてのクラスで作成する予定の実装をEclipseが認識しているとは思わないでください。
メソッドが最初に何もしない場合(意味のある実装を提供できない場合)、抽象クラスでこれを行うことができます。
void myMethod() {
// does nothing yet
}
親クラスに単純なメソッドを追加する
/** これは親クラスでオーバーライドする必要があります!! */ @Deprecated public void foo() { }
サブクラスでメソッドを実装します。メソッドをテストします。
- メソッドの実装がすべてのサブクラスに存在するまで、手順 2 を繰り返します。
親クラスのオリジナルメソッドを抽象化する
public 抽象 void foo();