Java ~ Отправить перечисление через сокет - PullRequest
6 голосов
/ 28 февраля 2012

Каков наилучший способ отправки значения перечисления через сокеты?Есть ли способ преобразовать значение enum в int и наоборот?Как:

Enum values {
    value1,
    value2
}

int value = (int)value1;
And...
values value2 = (value) value;

Было бы очень приятно отправить это через Интернет!Спасибо всем!

Бас

1 Ответ

6 голосов
/ 28 февраля 2012

Либо маршалл к int:

int ordinal = values.value1.ordinal()

//unmarshalling
values.values[ordinal];

или к String:

String name = values.value1.name();

//unmarshalling
values.valueOf(name);

Первый сохраняет некоторые пробелы (32-битные в отличие от строк различной длины)), но его сложнее поддерживать, например, перестановка значений enum нарушит обратную совместимость ordinal().С другой стороны, ordinal() позволяет переименовывать enum значения ...

...