में स्थिरांक की बजाय enums का उपयोग करना चाहिए जावा < 1.5 में, स्थिरांक इसआप हमेशा जावा
public class MyClass {
public static int VERTICAL = 0;
public static int HORIZONTAL = 1;
private int orientation;
public MyClass(int orientation) {
this.orientation = orientation;
}
...
तरह लागू किया जाएगा और आप इस तरह यह प्रयोग करेंगे:
MyClass myClass = new MyClass(MyClass.VERTICAL);
अब, 1.5 में जाहिर है आपको enums का उपयोग करना चाहिए:
public class MyClass {
public static enum Orientation {
VERTICAL, HORIZONTAL;
}
private Orientation orientation;
public MyClass(Orientation orientation) {
this.orientation = orientation;
}
...
और अब आप इसे इस तरह उपयोग करेंगे:
MyClass myClass = new MyClass(MyClass.Orientation.VERTICAL);
जो मुझे थोड़ा बदसूरत लगता है। enums के सभी प्रकार के लिए सुरक्षित अच्छाई के साथ
MyClass myClass = new MyClass(MyClass.VERTICAL);
: अब मैं आसानी से स्थैतिक चर के एक जोड़े जोड़ सकते हैं:
public class MyClass {
public static Orientation VERTICAL = Orientation.VERTICAL;
public static Orientation HORIZONTAL = Orientation.HORIZONTAL;
public static enum Orientation {
VERTICAL, HORIZONTAL;
}
private Orientation orientation;
public MyClass(Orientation orientation) {
this.orientation = orientation;
}
...
और अब मैं यह फिर से कर सकते हैं।
क्या यह अच्छी शैली, खराब शैली या न तो है। क्या आप बेहतर समाधान के बारे में सोच सकते हैं? कि enum एक प्रथम श्रेणी नागरिक होना चाहिए -
अद्यतन
Vilx- पहले एक उजागर करने के लिए मैं क्या लगता है कि मुझे याद आ रही थी थी। जावा में इसका मतलब है कि यह पैकेज में अपनी फाइल प्राप्त करता है - हमारे पास नामस्थान नहीं हैं। मैंने सोचा था कि यह थोड़ा हेवीवेट होगा, लेकिन वास्तव में इसे करने के बाद, यह निश्चित रूप से सही लगता है।
युवाल का जवाब ठीक है, लेकिन यह वास्तव में गैर-नेस्टेड एनम पर जोर नहीं देता था। इसके अलावा, 1.4 के लिए - जेडीके में बहुत सारे स्थान हैं जो पूर्णांक का उपयोग करते हैं, और मैं वास्तव में उस तरह के कोड को विकसित करने का एक तरीका ढूंढ रहा था।
पहले कोड ब्लॉक में, आप प्रत्येक चर को एक अलग मान देना चाहते थे, है ना? –
क्या आपको वास्तव में अलग-अलग अभिविन्यासों की तुलना में अधिक करने के लिए कक्षा MyClass की आवश्यकता है? –