2012-02-28 7 views
5

सबसे अच्छा तरीका सॉकेट के माध्यम से एक enum मूल्य भेजने के लिए क्या है पर एक enum भेजें? क्या एक enum मान को int में परिवर्तित करने का कोई तरीका है और इसके विपरीत? तरह:जावा ~ एक गर्तिका कनेक्शन

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

का डुप्लीकेट नहीं, मैं नहीं चाहता मूल्यों में विशेषताओं को जोड़ने के लिए, मैं बस एक एनम मान भेजना चाहता हूं जो सॉकेट के माध्यम से सर्वर और क्लाइंट पर स्मरण है। आपकी टिप्पणी के लिए धन्यवाद;) – Basaa

+0

कोशिश करें [यह] (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

वह (और बंथर्स एंडवर) ठीक काम किया। अब एक और सवाल: सी # के समान परिणाम प्राप्त करने के लिए जावा फ़ंक्शन क्या है: this.cmd = (कमांड) बिटकोनवर्टर.ToInt32 (डेटा, 0); – Basaa

+0

@Basaa: तकनीकी रूप से यह एक दूसरा सवाल (यह आप एक जवाब प्राप्त होगा अधिक होने की संभावना है) होना चाहिए, लेकिन इस पर एक नजर है: stackoverflow.com/questions/1026761 –

+0

मैं अगर आप कर सकते हैं नाम का प्रयोग करेंगे। जैसे 'dataOutput.writeUTF (value.name())' और 'Enum e = Values.forName (dataInput.readUTF()) के साथ 'क्योंकि यह भी अधिक पठनीय है। –