2012-03-15 23 views
7

मुझे पुस्तकों के लिए कई प्रकार के शैलियों से चयन करना है और मैं इसके लिए enums का उपयोग कर सोच रहा था, लेकिन "मेडिकल, हेल्थ & फिटनेस" जैसे दो या दो से अधिक शब्दों द्वारा बनाई गई कई शैलियों हैं, "कला & फोटोग्राफी", "विज्ञान कथा साइंस फिक्शन "", आदिक्या दो या दो से अधिक शब्दों के साथ enum class होना संभव है?

public enum Genero { 
    Action, Comedy, Drama, Computers, Novel, Science Fiction 
} 

लेकिन मैं के लिए सिंटैक्स त्रुटि मिल गया "। मैंने इसे डबल कोट्स और सरल क्वाउट्स के साथ डालने की कोशिश की, लेकिन न तो काम किया। पुस्तक en वर्ग के लिए एक विशेषता के रूप में इस enum का उपयोग किया जा रहा है।

उत्तर

14

नहीं, यह संभव नहीं है। एनम नाम valid Java identifiers होना चाहिए - इसका मतलब है, कोई रिक्त स्थान नहीं है। सामान्य सम्मेलन सभी अपर-केस अक्षर और अलग शब्द एक अंडरस्कोर का उपयोग कर, इस तरह में enum नाम घोषित करने के लिए है:

public enum Genero { 
    ACTION, COMEDY, DRAMA, COMPUTERS, NOVEL, SCIENCE_FICTION 
} 
+0

चूंकि इमम्स को आंतरिक रूप से संभाला जाता है, मुझे लगता है कि सिर्फ अंडरस्कोर –

+0

का उपयोग करेगा यह ठीक है! –

5

यह संभव नहीं है। हालांकि, नाम में अंडरस्कोर (Science_Fiction) का उपयोग करना संभव है।

public enum Genero { 
    ACTION("Action"), COMEDY("Comedy"), DRAMA("Drama"), COMPUTERS("Computers"), NOVEL("Novel"), SCIENCE_FICTION("Science Fiction"); 

    private final String toString; 

    private Genero(String toString) { 
     this.toString = toString; 
    } 

    public String toString(){ 
     return toString; 
    } 
} 
+0

वह संकलन नहीं करेगा। –

+0

@ टॉमहॉविन-tackline Whoopsies, अब तय है। – Jeffrey

+0

मैं केवल लिंग विशेषता की पुस्तक एक लिंग को असाइन करना चाहता हूं। पसंद: 'लिंग = जेनरो.एक्शन' मैं नहीं देखता कि मैं कन्स्ट्रक्टर या टूस्ट्रिंग विधि का उपयोग कहां कर सकता हूं: एस –

0

यह हो सकता है कि आप क्या चाहते: तुम भी जो कुछ भी आप यह करना चाहते हैं (क्योंकि ऐसा लगता है आप अपनी enums के लिए एक मानव पठनीय नाम के लिए जा रहे हैं) वापस जाने के लिए toString विधि ओवरराइड कर सकते हैं

static private enum EnumExample { 
    R("Sample emun with spaces"), 
    G("Science Fiction"); 
    final private String value; 
    EnumExample(String s) { 
    value = s; 
    } 
} 

System.out.println(EnumExample.G.value); 
System.out.println(EnumExample.valueOf("G").value); 

Science Fiction 
Science Fiction 
+0

मैं उस क्षेत्र को 'अंतिम' और 'निजी' बनाउंगा। –

+0

@ TomHawtin-tackline क्या आपका मतलब है "अंतिम निजी स्ट्रिंग मान" या? – Java42

+0

हां। वर्तमान में आप 'EnumExample.G.value = "कॉमेडी" लिख सकते हैं; '। –