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 ステートメントのケースとして使用する機能。
状態値を実装するために static final int を使用することを検討しました。ただし、これらは case ステートメントとして使用できません。次に、列挙型の拡張を調べましたが、それは許可されていません。
誰か私に提案はありますか?
ありがとうございました