可以说我有两个类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/