这是我在 C++ 中做事的正常方式:
class object
{
public:
enum
{
STATE_ACTIVE = 0,
STATE_INACTIVE,
OBJ_NUM_STATES,
}
int m_State;
virtual void UpdateState ()
{
switch(this->m_state)
{
case STATE_ACTIVE: /* do stuff*/ break;
case STATE_INACTIVE: /* do stuff*/ break;
}
}
}
class SpecialGameObject : public Object
{
public:
enum
{
STATE_SPECIAL_A = OBJ_NUM_STATES + 1,
STATE_SPECIAL_B,
SPECIAL_NUM_STATES,
}
virtual void UpdateState ()
{
Object::UpdateState();
switch(this->m_State)
{
case STATE_ACTIVE: /* do extra stuff */ break;
case STATE_SPECIAL_A: /* do special stuff*/ break;
case STATE_SPECIAL_B: /* do special stuff*/ break;
}
}
}
我试图弄清楚让所有这些功能在java中工作。具体来说,我需要工作:
1) 派生类具有在派生状态值之后自动排列的状态值的能力。这样我就可以向基类添加新的状态值,而不必担心它们会与任何派生类中使用的状态值重叠。
2) 能够在 switch 语句中使用状态值作为 case。
我研究了使用静态最终整数来实现我的状态值。但这些不能用作案例陈述。然后我研究了扩展枚举,但这是不允许的。
有人对我有什么建议吗?
谢谢