ショートバージョンを拡張しますクラス(以下のコードは、このポストの目的のためだけに短縮されています)Javaのジェネリッククラスは、ジェネリック引数に
abstract class D {
abstract void f();
abstract void g();
}
次に、各f()と各g()の可能な組み合わせのセットがあります。目標はすべての可能な組み合わせを持つことです。
解決策の1つは、Dを拡張してf_j()を実装するクラスFjを作成し、各g_i()に対してFjを拡張しg_i()を実装するクラスGiFjを作成することです。 例
abstract class F1 extends D {
@Override
void f() { /* F1 Work */ }
}
abstract class F2 extends D {
@Override
void f() { /* F2 Work */ }
}
class G1F1 extends F1 {
@Override
void g() { /* G1 Work */ }
}
class G1F2 extends F2 {
@Override
void g() { /* G1 Work : Duplicated Code */ }
}
についての問題は、GIのコードが何度も重複して取得しようとしていることです。
私が実装するソリューションは、一般的なクラスの
class G1<F extends D> extends F {
@Override
void g() { /* G1 work */ }
}
にすべてのGFIを再グループ化することで、どのようにJavaでこれを行うために、あるいはそれが不可能であれば、それを
を行うための良い方法は何ですか
残念ながら、Javaではサポートされていないクラスの複数の継承が必要なようです。 [mixin](http://stackoverflow.com/questions/587458/implement-mixin-in-java)戦略の使用を見てください。 – pathfinderelite