जावा में एनमों का नामकरण: एकवचन या बहुवचन?


184

वहाँ एक "आधिकारिक" अनुशंसा है कि जावा एनम का नाम कैसे दिया जाए?

enum Protocol { HTTP, HTTPS, FTP }

या

enum Protocols { HTTP, HTTPS, FTP }

मुझे पता है कि। नेट की दुनिया में सिफारिश यह है कि एकल का उपयोग करें और केवल उन झंडों को छोड़कर जो कि झंडे का प्रतिनिधित्व करते हैं। यदि जावा में कुछ समान है तो बस उत्सुक।

एक संबंधित प्रश्न जो .Net विशिष्ट प्रतीत होता है: गणना के लिए एकवचन या बहुवचन?


3
आप यहाँ उत्तर पा सकते हैं । Enums कक्षाएं हैं, इसका मतलब है, कि आपको उन्हें उसी तरह घोषित करना चाहिए।
bsiamionau

जवाबों:


220

जावा में Enums (और शायद सामान्य रूप से enums) एकवचन होना चाहिए। सोच यह है कि आप कई प्रोटोकॉल का चयन नहीं कर रहे हैं, बल्कि मूल्यों की सूची में संभावित विकल्पों में से एक प्रोटोकॉल का चयन कर रहे हैं।

नोटों की अनुपस्थिति: http://docs.oracle.com/javase/tutorial/java/javaOO/en.ru.html


2
Microsoft .NET प्रोग्रामिंग के बारे में लगभग एक ही राय
रखता है

कैसे आए टाइम यूनाइट प्लुरल का उपयोग करता है? उदाहरण के लिए: DAYS, HOURS...
theyuv

4
मूल्य बहुवचन हैं, एनम खुद नहीं है :-)
केल्विन

21

उसी तरह जब आप किसी डेटाबेस या जावा में किसी वर्ग के नाम में तालिका नाम को परिभाषित कर रहे हैं, तो आप एनम के लिए एकवचन का उपयोग करते हैं यह भी सबसे अच्छा विकल्प है। बस यह देखें कि आप इसका उपयोग कैसे करने जा रहे हैं।

एक उदाहरण लिखते हैं:

public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

class Appointment {
private Day day;

public void setDay(Day day) {
    this.day = day;
}
}

विलक्षण रूप में आप स्पष्ट रूप से दिन की विशेषता को देखते हैं। "दिन" सप्ताह के दिन यह नियुक्ति होने जा रही है। अन्यथा विधि के हस्ताक्षर सेटडे (दिन दिन) हो जाते थे और निश्चित रूप से बहुत से लोग सोच रहे होंगे कि क्या नियुक्ति एक दिन से अधिक हो सकती है।

यदि आप किसी कंपनी में काम करते हैं, तो 48 घंटे की शिफ्ट में आप कुछ इस तरह परिभाषित कर सकते हैं:

public enum Days {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}

इस तरह आप उन दिनों को निर्धारित कर सकते हैं जो आप काम करने जा रहे हैं। लेकिन फिर भी यह अजीब लगेगा और एक बेहतर विकल्प है और विलक्षण रूप का उपयोग करना है:

public enum Shift {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}

अब आप वास्तव में enum का अर्थ दिखा रहे हैं। आमतौर पर किसी भी डोमेन में आप यह पता लगाने जा रहे हैं कि एनम के लिए एकवचन का उपयोग करना सबसे अच्छा विकल्प है क्योंकि एनम में प्रत्येक स्थिर एक तत्व है।

आप .NET का भी जिक्र करें। .NET में एक "झंडे" enum का अर्थ है कि जब आप उस Enum को एक पैरामीटर के रूप में उम्मीद कर रहे हैं कि आपको वास्तव में क्या मिलता है तो उस enum के तत्वों की एक सूची है (एक पूर्णांक के रूप में संग्रहीत)।

// Define an Enum with FlagsAttribute.
[FlagsAttribute] 
enum MultiHue : short
{
    Black = 0,
    Red = 1,
    Green = 2,
    Blue = 4
};

public void setMultiHue(MultiHue hues);

आप जावा में भी ऐसा कर सकते हैं, लेकिन एनम अभी भी विलक्षण होगी:

public enum Hue {
BLACK, RED, GREEN, BLUE;
private final Integer hue;

Hue() {
    this.hue = 1 << this.ordinal();
}

public Integer toFlag() {
    return this.hue;
}
}

public class MultiHue {
private Integer hues = 0;

public void addHue(Hue hue) {
    this.hues |= hue.toFlag();
}

public boolean hasHue(Hue hue) {
    return (this.hues & hue.toFlag()) != 0;
}
}

जावा के साथ ऐसा करने के लिए एक आसान और स्पष्ट (हालांकि यह अधिक मेमोरी का उपयोग करता है) केवल एक सूची का उपयोग करना है।


2
दरअसल, ऐसा करने का एक बेहतर तरीका एक EnumSet होगा जो एक BitSet को एनकैप्सलेट करता है और आप सभी का ध्यान रखता है। :-)
corsiKa
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.