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