Я занимаюсь разработкой Java-программы, в которой мне нужно использовать следующий TypeSafeEnum (который указан во внешнем компоненте):
public class MyInterfaceTypeEnum
extends TypeSafeEnum
{
public MyInterfaceTypeEnum(String paramString, int paramInt)
{
super(paramString, paramInt);
}
public static final MyInterfaceTypeEnum UNKNOWN = new MyInterfaceTypeEnum("UNKNOWN", 0);
public static final MyInterfaceTypeEnum TCP = new MyInterfaceTypeEnum("TCP", 10);
public static final MyInterfaceTypeEnum UDP = new MyInterfaceTypeEnum("UDP", 20);
public static final MyInterfaceTypeEnum IPX = new MyInterfaceTypeEnum("IPX", 30);
public static final MyInterfaceTypeEnum RS232 = new MyInterfaceTypeEnum("RS232", 40);
}
В моем классе задач-процессов используется следующий метод:
private void processInterface(MyInterfaceTypeEnum type)
{
switch(type)
{
case RS232:
{
// do action
break;
}
case TCP:
case UDP:
{
// do action
break;
}
case IPX:
{
// do action
break;
}
case UNKNOWN:
default:
{
// do default action
break;
}
}
}
Сбой компилятора в строке оператора switch со следующим сообщением:
Невозможно включить значение типа MyInterfaceTypeEnum.Разрешены только конвертируемые значения типа int, строки или перечислимые переменные.
Я гуглил, но везде было написано: этот шаблон TypeSafeEnum может подойти.Пожалуйста, дайте мне идеи, как обойти это.
ОБНОВЛЕНО:
Важно отметить, что реализация MyInterfaceTypeEnum
не может быть изменена мной (эточасть использованного (импортированного) компонента).Поэтому я вынужден использовать это.Итак, основная ситуация такова: «enum» (неправильно используемый класс) уже задан.
Если бы я отказался от использования MyInterfaceTypeEnum
, я также не смог бы использовать много функций (использующих этотТип-безопасный-enum интенсивно).Поэтому у меня нет другого выбора, кроме как принять это и попытаться найти простейшую возможность.
Я знаю, что можно использовать дерево операторов if-else.Но я хочу этого избежать.Поскольку MyInterfaceTypeEnum
был добавлен во внешний компонент (реализован другими, и я не могу его изменить).