2011-10-21 13 views
48

जावा के डिफ़ॉल्ट पैकेज का उपयोग एक बुरा अभ्यास है?जावा के डिफ़ॉल्ट पैकेज का उपयोग एक बुरी आदत है?

+0

मुझे उस पैकेज में कक्षाओं को अन्य, 'असली', पैकेज से संदर्भित करने का प्रयास करते समय डिफ़ॉल्ट पैकेज का उपयोग करने से उत्पन्न होने वाली समस्याओं की अस्पष्ट यादें हैं। – Oliver

+4

हां, जब तक आप फेंकने वाले कोड लिख रहे हों। – aroth

+5

आप जो कर रहे हैं उस पर निर्भर करता है। एक वर्ग के जावा होमवर्क के लिए यह ठीक है। कुछ और - बस इसे एक नामित पैकेज में डाल दें और आप सुरक्षित हैं। –

उत्तर

54

हाँ, यह है। आदर्श रूप से, टक्कर नामकरण से बचने के लिए, पैकेज नाम विश्व स्तर पर अद्वितीय होना चाहिए। डिफ़ॉल्ट पैकेज का उपयोग इस सम्मेलन को तोड़ देता है। डिफ़ॉल्ट पैकेज से कक्षा आयात करना भी असंभव है।

अज्ञात पैकेज क्यों मौजूद हैं, अगर यह इतना बुरा विचार है? the JLS §7.4.2 से:

Unnamed packages are provided by the Java platform principally for convenience when developing small or temporary applications or when just beginning development.

+1

से छोड़ दें ... जब तक किसी और के पास आपके जैसा विचार नहीं है। नामित पैकेज का उपयोग करने में क्या समस्या है? –

+0

@irreputable मुझे आपके तर्क पसंद है। – Michael

+3

... हाँ, लेकिन फिर वे मेरे जैसे लोगों के बारे में चिंतित थे ताकि वे सभी इसका इस्तेमाल न करने का फैसला कर सकें। – irreputable

1

हां, यह है। समस्या यह है कि डिफ़ॉल्ट पैकेज से कक्षाओं को आयात करना संभव नहीं है।

20

वहाँ कई विभिन्न स्तरों पर समस्याएं हैं:

  • आप कक्षाओं कि
  • नहीं हैं आप वर्ग लोड हो रहा है समस्याओं अगर आप मिल जाएगा से डिफ़ॉल्ट पैकेज में कक्षाएं आयात नहीं कर सकते कई कलाकृतियों में डिफ़ॉल्ट पैकेज को हल करने का प्रयास करें
  • अब आप डिफ़ॉल्ट और संरक्षित दायरे का उपयोग नहीं कर सकते हैं जैसे कि आप आमतौर पर
  • कोई स्पष्ट नहीं है आपके कोड और अन्य कोड के बीच भेद
3

हां यह है। जैसा कि अन्य उत्तरों ने कहा है, आप डिफ़ॉल्ट पैकेज से कक्षाएं लोड नहीं कर सकते हैं।

अतः उत्तर देखें:

How to import a class from default package
How to access java-classes in the default-package?

हालांकि, log4j की आवश्यकता है कि विन्यास डिफ़ॉल्ट पैकेज में स्थित हो। यह एकमात्र चीज है जो वहां रखना उचित है।

संपादित करें: जैसा कि शॉन पैट्रिक फ़्लॉइड और माइकल ने टिप्पणियों में बताया है, आप किसी भी कॉन्फ़िगरेशन फ़ाइलों को डिफ़ॉल्ट पैकेज में डाल सकते हैं। आप दोनों को यह इंगित करने के लिए आप दोनों को धन्यवाद।

+3

सिर्फ log4j कॉन्फ़िगरेशन नहीं, कई प्रकार के कॉन्फ़िगरेशन डेटा। लेकिन जावा कक्षा –

+0

नहीं वसंत विन्यास फाइल (applicationContext.xml) अक्सर यहां भी जाते हैं। – Michael

+1

@ सेनपैट्रिकफ्लॉइड इस तरह की टिप्पणियां हैं जो मुझे अपने कौशल में सुधार करने में मदद करती हैं! धन्यवाद। –

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