2013-02-23 108 views
7

मुझे यकीन नहीं है कि यह एक निश्चित कथन है, लेकिन ऐसा लगता है कि जावा एपीआई एनम पर निरंतर स्याही पसंद करता है। मैंने उपयोग किए गए एपीआई के कुछ हिस्सों से, मुझे कई final static int स्थिरांक का सामना करना पड़ा है जहां enum इसके बजाए उपयोग किया जा सकता था। java.awt.BasicStrokeजावा लाइब्रेरी एनम्स से अधिक स्थिर इन्ट्स का उपयोग क्यों करते हैं?

से:: इस तरह के उदाहरण है कि मैं इस पल घूर जा करने के लिए होता है एक बार

public final static int CAP_BUTT = 0; 
public final static int CAP_ROUND = 1; 
public final static int CAP_SQUARE = 2; 

वास्तव में, मुझे नहीं लगता कि मैं कभी भी एक enum देखा है एक मानक जावा एपीआई कक्षा में प्रयोग किया जाता है। ऐसा क्यों है?

मैं अपने स्वयं के एप्लिकेशन के लिए एक एपीआई डिजाइन कर रहा हूं (जावा एपीआई से लगभग एक बिलियन गुना छोटा है, लेकिन मैं अभी भी इसके बारे में स्मार्ट होने की कोशिश कर रहा हूं), और यह तय करने की कोशिश कर रहा हूं कि निरंतर स्याही या enums का उपयोग करना है या नहीं। THIS पोस्ट संदर्भ एक बहुत ही लोकप्रिय पुस्तक है जिसे मैंने अभी तक नहीं पढ़ा है जिसका अर्थ है कि enums के कई फायदे हैं। उसी धागे में सबसे अधिक उच्च स्कोर किए गए उत्तर सहमत हैं। तो जावा अपनी खुद की enum क्षमताओं का उपयोग क्यों नहीं करता है?

+3

एक अनुमान पोस्टिंग के ठीक बाद मेरे दिमाग में बस आया। शायद 'enum' जावा में बहुत समय पहले उपलब्ध नहीं था जब इन सभी वर्गों को डिजाइन किया गया था? – The111

+7

'बेसिकस्ट्रोक 'प्री-तिथियां' एनम 'जो जावा 1.5 में पहुंची थी। – Reimeus

+1

शायद यह कोड है जो भाषा के समक्ष पहले लिखा गया था। चूंकि यह एक सार्वजनिक एपीआई है, इसे – James

उत्तर

13

BasicStroke पूर्व-दिनांक enum जो जावा 1.5 में पहुंचा। पिछड़ा संगतता के लिए कोड के रूप में छोड़ दिया गया है। कोई नया कोड लिखते समय, enums निश्चित रूप से final static चर से अधिक बेहतर डिज़ाइन विकल्प हैं।

11

यह निरंतर int en enum से बेहतर होने के साथ कुछ भी नहीं है: यह सिर्फ इतना है कि enum केवल जेडीके 5 में जोड़ा गया था, इसलिए अधिकांश जावा एपीआई enum उपलब्ध होने से पहले लिखा गया था: निरंतर स्याही एकमात्र विकल्प थे, इसलिए थे उपयोग किया गया।

यदि जावा एपीआई फिर से लिखा गया था तो इसमें अधिक से अधिक enums शामिल होंगे, और आप उन्हें जेडीके 6 या बाद में एपीआई में नए जोड़ों में दिखाई देने की उम्मीद कर सकते हैं।

आपको शायद अपने आवेदन के लिए एम्स का उपयोग करना चाहिए, वे आम तौर पर बेहतर विकल्प होते हैं।

+0

धन्यवाद जॉन, अगर आपको रीमेस ने अपनी टिप्पणी पहले पोस्ट नहीं की थी तो आपको जवाब मिल जाएगा। ;-) यहां अच्छी जानकारी भी है। – The111

+0

क्या वह था? मेरी स्क्रीन का कहना है कि मेरा 16 मिनट पहले था, उसका 14 वर्ष का था। नहीं कि मैं परेशान हूं: पी –

+0

उसने 'उत्तर' पोस्ट करने से पहले 'टिप्पणी' पोस्ट की। ;- मैंने उनसे "स्वीकार" करने का वादा किया, अगर उन्होंने जवाब दिया, तो मैंने जवाब देने के ठीक पहले। मेरे वादे पर जाना पड़ा ... लेकिन आम तौर पर मैं कम समग्र स्कोर के साथ अंडरगॉग को स्वीकार करता हूं। :-) – The111