gpt4 book ai didi

java - 使用枚举扩展类 - java

转载 作者:行者123 更新时间:2023-11-30 06:30:55 26 4
gpt4 key购买 nike

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

我还需要使用 PropertyChangeSupport 来监控状态变化。

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

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

最佳答案

委托(delegate)优于继承。

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com