可以说我有两个类A和B,它们的内部状态由枚举状态表示。 B类扩展了A以添加新功能,但同时也添加了新的内部状态。确切地说,它通过将A状态的一个划分为两个新状态来增加细粒度的状态支持。

我还需要使用PropertyChangeSupport来监视状态更改。

目前,我在枚举状态的A类中定义了所有状态。我有受保护的方法setState()和getState()。为了从外部检查状态,我编写了isAvaible(),isComplete()等方法。这些方法仅在适当的类中存在,具体取决于它们的层次结构和状态支持。

我真的不喜欢这个想法,在父类中定义了所有状态。如何在Java中正确实现呢?据我所知,枚举不能使用继承。

最佳答案

委托优先于继承。

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 ;
}

关于java - 用枚举扩展类-Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10065989/

10-12 00:33