1

Java でのインターフェイスと実装の次の階層があります。

A <- B <- C

A_impl <- B_impl <- C_impl

whereA <- BBextends AA_implimplementsAなどを意味します。

今私は拡張したいと思います , 拡張しBながらD,C言い換えれば:DE

A <- B <- C <-|
     <- D <-- E

D_implextendsがありますB_implが、何を拡張する必要がありE_implますか? andE_implの両方を実装していますが、 Java でandの両方を拡張することはできません。それで、私は何をすべきですか?CDC_implD_impl

4

3 に答える 3

0

Java では多重継承を行うことはできませんが、複数のインターフェースを使用することはできます。別のクールな解決策は、継承するのではなく、拡張したいクラスの一方または両方に lomboks @Delegate を使用することです。これにより、多くの同じ機能がクールできちんとした方法で提供されます。

http://projectlombok.org/features/Delegate.html

于 2013-05-23T16:08:30.637 に答える
0

私が見たもの(私がQの権利を理解していれば)、あなたの問題はオンにE/E_implなっているので、あなたがしたいこと(implは省略):

 A <-  B <- C <---+         
       ^           \        
       |            - E     
       +----D <---+/        

解決策 1 (インターフェイスをスキップしEます)。

              (implements)  
 A <-  B <- C <|--+         
       ^           \        
       |            - E_impl (normal class)
       +----D <|--+/        
              (implements)  

このように、型のオブジェクトはE_impl and C (Dもちろん AB も) です。本当に一般/抽象型が必要な場合はE、解決策 2 を参照してください。

解決策 2 (抽象クラスEAを使用し、それをE_impl拡張する)

               (implements)
 A <-  B <- C <|--+
       ^           \ 
       |            - EA(abstract class) <--(extends)--E_impl
       +----D <|--+/
              (implements)

この場合、あなたE_impl EA, C, D, B, A

これがあなたの質問に答えることを願っています。

また、構成が問題を解決できるかどうかも検討してください。

于 2013-05-23T16:21:23.913 に答える