Вот нормальный способ сделать что-то в 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
Я рассмотрел использование статических целочисленных значений для реализации моих значений состояния.Но они не могут быть использованы в качестве заявлений.Затем я посмотрел на расширение перечислений, но это не разрешено.
У кого-нибудь есть предложения для меня?
Спасибо