2011-11-15 19 views
9

गुदा यहाँ प्रश्न:जावा सदस्य enum प्रकार पूंजीकृत होना चाहिए?

public enum reportType { ... 

जब भी मैं यह देख यह जार मुझे * क्योंकि जब मैं देख रहा हूँ यह एक घोषणा में इस्तेमाल किया: हम जावा enums जो अपने ही वर्ग हैं, और enums जो एक वर्ग के सदस्य हैं , यह एक प्रकार है, और प्रकार पूंजीकृत होना चाहिए। लेकिन जब मैं इसे पूंजीकृत करने की कोशिश करता हूं, ग्रहण मुझे चेतावनी देता है कि मुझे फील्ड नामों को पूंजीकृत नहीं करना चाहिए। मुझे लगता है कि एक्लिप्स शायद आधिकारिक जावा सम्मेलनों को मुझसे बेहतर जानता है, लेकिन यह सही नहीं लगता है। यहां तक ​​कि जावा सम्मेलन दस्तावेज़ के माध्यम से फिसल गया, लेकिन इस मुद्दे को संदर्भित नहीं किया।

  • कोई यमक
+1

ऐसा लगता है कि आपके पास कुछ गैर-मानक ग्रहण शैली चेतावनियां हैं। मैं ग्रहण का उपयोग करता हूं और यह समस्या नहीं है। क्या आपने अपनी वरीयताओं की जांच की है? –

+0

[कोडिंग सम्मेलन - नामकरण Enums] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3069743/coding-conventions-naming-enums) – Woot4Moo

+0

मैं आपके जैसा ही जार में हूं - हमेशा प्रकार को पूंजीकृत करें। लेकिन मैं कुछ भी संदर्भ नहीं दे सकता जो कहता है कि किसी भी तरह से "सही" है। –

उत्तर

10

इरादा वे, अपर केस के साथ अपने ही वर्ग शुरू कर रहे हैं अगर वे सदस्यों लोअर केस हैं।

public enum ReportType { XML, TEXT, HTML }; 

public class MyClass 
{ 
    ReportType defaultReport = ReportType.XML; 
} 
+0

@ होवरक्राफ्टफुलऑफल्स सदस्य घोषणा घोषणा enum कक्षा घोषणा के विरुद्ध। _public enum ReportType_ बनाम एक वर्ग के रूप में _ReportType डिफ़ॉल्ट रिपोर्ट; _ सदस्य के रूप में, संशोधित उत्तर। –

+0

ठीक है, धन्यवाद, मैं समझता हूं कि आपका क्या मतलब है। मेरी प्रारंभिक टिप्पणी को हटा रहा है। –

+0

... और आपको 1+ –

2

जावा में, (गैर आदिम) प्रकार आमतौर पर में लिखे गए हैं के नाम PascalCase। एक enum के बाद से (के रूप में एक class) एक प्रकार परिभाषित करता है, यह सामान्य उन्हें भी में PascalCase लिखना है:

enum MyEnumInPascalCase { ... } 
+0

अधिकांश समय इसे कैमेलकेस (बाधाओं के कारण) के रूप में जाना जाता है। –

+2

CamelCase बनाम PascalCase (पहले अक्षर में अंतर नोटिस) - http://msdn.microsoft.com/en-us/library/x2dbyw72(v=vs.71).aspx –

12

Enums एक प्रकार और enum नाम पूंजी के साथ शुरू करना चाहिए रहे हैं। एनम सदस्य स्थिरांक हैं और उनका पाठ सभी अपरकेस होना चाहिए।

+4

मैं सिर्फ कह सकते हैं कि कितना मैं आपके नाम? हालांकि SO मुझे किसी कारण से @ इसे नहीं जाने देगा ... – orbfish

4

क्या आप वाकई डिफ़ॉल्ट सेटिंग्स का उपयोग कर रहे हैं? क्योंकि आम तौर पर enums वास्तव में पूंजीकृत होते हैं। Enum मान रखने वाले चर हालांकि टोपी से शुरू होना चाहिए।

public enum State { 
    UNINITIALIZED, 
    INITIALIZED, 
    STARTED, 
    ; 
} 

private State state; 

private void start() { 
    state = State.UNINITIALIZED; 
    ... 
} 
`. 

आप स्थिर आयात के रूप में अच्छी State. भाग से छुटकारा पाने के लिए उपयोग हालांकि आम तौर पर मुझे लगता है कि यह हो जाने के लिए बेहतर है हो सकता है। Enum मान स्थिरांक हैं और सीएपीएस में होना चाहिए। मैंने लोगों को रनटाइम के दौरान enum स्थिरांक में फ़ील्ड बदलते देखा है, और यह वही नहीं है जो आप चाहते हैं (क्लास के भीतर आलसी तत्कालता को छोड़कर अब और उसके बाद)।

4

जावा सम्मेलन दस्तावेज़ के माध्यम से भी फ़्लिप किया गया, लेकिन इस मुद्दे को संदर्भित नहीं किया गया।

जावा सम्मेलन दस्तावेज़ 10+ वर्षों में अद्यतन नहीं किया गया है। मूल रूप से जावा 1.1 के बाद से।

+1

यह सच है। वह वास्तव में मदद करता है, धन्यवाद। – orbfish

संबंधित मुद्दे