2013-12-13 4 views
5

import one.two.* क्यों import one.two.three.MyClass शामिल नहीं है? जावा के पास import one.two.** जैसा कुछ नहीं होना चाहिए? या क्या कोई कारण है (उन्होंने अभी नहीं किया है, न कि वे ऐसा नहीं कर सके)?जावा में "गहरा" वाइल्डकार्ड आयात क्यों नहीं है?

धन्यवाद

+0

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

उत्तर

8

जावा पैकेजों का वास्तव में एक-दूसरे को उप-वर्गीकरण के रूप में नहीं मानता है; जबकि java.util और java.util.concurrency दूसरे जैसा दिख सकता है कि किसी भी तरह का पहला हिस्सा है, उन्हें पूरी तरह से स्वतंत्र माना जाता है और डॉट ज्यादातर स्वच्छता के लिए होता है।

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

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

4

जावा प्रत्येक पैकेज को स्वतंत्र के रूप में मानता है। उदाहरण के लिए, पैकेज स्थानीय किसी भी "उप" पैकेज में विस्तारित नहीं होता है। मुझे लगता है कि एक सार्थक तरीके से पदानुक्रम का उपयोग करना मूल्यवान होगा लेकिन जावा का डिज़ाइन सबकुछ जितना संभव हो सके उतना सरल बनाना था।

या क्या कोई कारण है (अन्य लोगों के अलावा, ऐसा नहीं किया कि वे ऐसा नहीं कर सके)?

समस्या पिछली संगतता है जो पुराने कार्यक्रमों को तोड़ सकती है। मुझे संदेह है कि यह हल करने योग्य है।

सच में, अधिकांश आईडीई आपके लिए आपके आयात का प्रबंधन करते हैं और मैं अब भी अपने आयात को नहीं देखता हूं। निश्चित रूप से import * से परहेज करना बेहतर है ताकि सभी वर्ग स्पष्ट रूप से आयात किए जा सकें।

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