3
什麼是正確的語法,使一個類繼承它的通用說法:
class A<T> extends T {} // doesn't compile
龍版本:
我有一個抽象基類(下面的代碼已經縮短了這個職位的用途)
abstract class D {
abstract void f();
abstract void g();
}
然後,每個f()和每個g()都有一組可能的組合。目標是擁有所有可能的組合。一個解決方案是爲每個f_j()創建一個擴展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 */ }
}
的問題是,對於胃腸道的代碼是會得到重複多次。
,我想要實現的解決方案是將所有GFI重新集結成泛型類
class G1<F extends D> extends F {
@Override
void g() { /* G1 work */ }
}
因此,如何在Java中做到這一點,或者如果它是不可能有什麼做
的好辦法
不幸的是,它看起來像你想要多類繼承,這在Java中不受支持。看看使用[mixin](http://stackoverflow.com/questions/587458/implement-mixin-in-java)策略。 – pathfinderelite