बस यह समझने की कोशिश कर रहा हूं कि मैं String.java
फाइल क्यों बना पा रहा हूं और इसे बिना किसी त्रुटि के संकलित किया गया है। जहां तक मुझे पता है, क्लासलोडर चेन बूटस्ट्रैप क्लासलोडर में जाएगी और यह पहले ही स्टिंग.क्लास लोड कर चुकी है। क्या आप कृपया मुझे समझने में मदद कर सकते हैं?
2 जवाब
एक वर्ग की पहचान उसके नाम से नहीं, बल्कि उसके पूर्ण-योग्य नाम से होती है, जो कि पैकेज का नाम है और उसके बाद वर्ग का नाम है।
अगर आप किसी पैकेज com.myapp
में अपना खुद का String
वर्ग बनाते हैं, तो उसका पूर्ण-योग्य नाम com.myapp.String
होगा। यह मानक String
वर्ग के साथ विरोध नहीं करता है, जिसका पूर्ण-योग्य नाम java.lang.String
है।
बेशक, जब आप ऐसा करते हैं तो यह बहुत भ्रमित करने वाला होता है, खासकर क्योंकि java.lang
पैकेज में कक्षाएं डिफ़ॉल्ट रूप से आयात की जाती हैं। इसलिए, व्यवहार में आपको कभी भी अपनी खुद की कक्षा String
नहीं लिखनी चाहिए, या अपनी खुद की किसी भी कक्षा को मानक पुस्तकालय की कक्षाओं के समान नाम नहीं देना चाहिए (विशेषकर पैकेज java.lang
से मानक कक्षाएं)।
जैसा कि जेस्पर ने प्रकाश डाला है, एक वर्ग की विशिष्टता उसके पूर्ण रूप से योग्य नाम यानी पैकेज द्वारा निर्धारित की जाती है।
दोनों स्ट्रिंग कक्षाओं को किसी अन्य वर्ग में आयात करने का प्रयास करें, और जब आप इसका उपयोग करने का प्रयास करेंगे तो आप अंतर देखेंगे।
import java.lang.String;
import com.myclass.String;
अब, अस्पष्टता को हल करने के लिए, आपको किसी वर्ग को उसके पूर्णतः योग्य नाम से संदर्भित करने की आवश्यकता है।
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।
String
java.lang.String
है।