2012-02-28 5 views
5

소켓을 통해 열거 형 값을 보내는 가장 좋은 방법은 무엇입니까? enum 값을 int로 또는 그 반대로 변환하는 방법이 있습니까? 처럼 :Java ~ 소켓 연결을 통해 열거 형을 전송하십시오.

Enum values { 
    value1, 
    value2 
} 

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

는 인터넷을 통해이를 보내 아주 좋은 것입니다! 감사합니다.

지어져

+0

중복 된 http://stackoverflow.com/questions/1681976/enum-with-int-value-in-java –

+0

아니요, 원하지 않습니다. 속성을 값에 추가하기 위해 소켓을 통해 서버 및 클라이언트의 보안 문자 인 Enum 값을 보내려고합니다. 귀하의 의견을 보내 주셔서 감사합니다;) – Basaa

+0

보십시오 [this] (http://mindprod.com/jgloss/enum.html#ORDINAL). –

답변

6

어느 마샬 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 값의 이름을 바꿀 수 있습니다.

+0

그 (그리고 Banthars andswer)는 잘 작동했습니다. 이제는 다른 질문입니다. C#과 같은 결과를 얻는 Java 함수는 무엇입니까? this.cmd = (Command) BitConverter.ToInt32 (data, 0); – Basaa

+0

@Basaa : 기술적으로 이것은 두 번째 질문 (답변을받을 가능성이 더 높습니다.)이지만 다음을보십시오. stackoverflow.com/questions/1026761 –

+0

가능한 경우 이름을 사용합니다. 예 : 'dataOutput.writeUTF (value.name())'와'Enum e = Values.forName (dataInput.readUTF())'를 사용하면 더 읽기 쉬울 것입니다. –

관련 문제