作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有两个类 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/
我是一名优秀的程序员,十分优秀!