2

2 つのクラス A と B があり、それらの内部状態が enum State で表されているとします。クラス B は A を拡張して新しい機能を追加しますが、新しい内部状態も追加します。正確には、A の状態の 1 つを 2 つの新しい状態に分割することで、きめ細かい状態のサポートを追加します。

状態の変化を監視するには、PropertyChangeSupport も使用する必要があります。

現在、enum State のクラス A ですべての状態が定義されています。保護されたメソッド setState() および getState() があります。外部から状態を確認するために、isAvaible()、isComplete() などのメソッドを作成しました。これらのメソッドは、階層と状態のサポートに応じて、適切なクラスにのみ存在します。

親クラスですべての状態を定義するというアイデアは本当に好きではありません。Javaでこれを正しく実装するにはどうすればよいですか? 私の知る限り、列挙型で継承を使用することはできません。

4

2 に答える 2

4

委任は継承よりも優先されます。

enum StateA
{
       AVAILABLE , COMPLETE ;
}

class A
{
      private StateA state ;
}

enum StateB
{
     AVAILABLE_TO_PUBLIC ( StateA . AVAILABLE ) , AVAILABLE_INTERNALLY ( StateA . AVAILABLE ) , COMPLETE ( COMPLETE ) ;

     StateB ( StateA sa )
     {
          this . sa = sa ;
     }

     private StateA sa ;
}

class B
{
      private StateB state ;
}
于 2012-04-08T20:04:33.417 に答える