बस यह समझने की कोशिश कर रहा हूं कि मैं String.java फाइल क्यों बना पा रहा हूं और इसे बिना किसी त्रुटि के संकलित किया गया है। जहां तक ​​​​मुझे पता है, क्लासलोडर चेन बूटस्ट्रैप क्लासलोडर में जाएगी और यह पहले ही स्टिंग.क्लास लोड कर चुकी है। क्या आप कृपया मुझे समझने में मदद कर सकते हैं?

0
Matty 7 जिंदा 2022, 13:16
1
आपने शायद इसे java.lang पैकेज में नहीं बनाया है।
 – 
Arnaud
7 जिंदा 2022, 13:18
क्या यह अंतर्निर्मित वर्ग का भी विरोध कर रहा है? "मूल" String java.lang.String है।
 – 
f1sh
7 जिंदा 2022, 13:18
आपको लगता है कि यह बुरा है? मैंने एक बार एक प्रोजेक्ट पर काम किया था जहाँ उन्होंने अपना ऑब्जेक्ट और स्ट्रिंग क्लास बनाया था ...
 – 
Stultuske
7 जिंदा 2022, 13:21
किसी भी डुप्लीकेट क्लास को बनाने में कोई प्रतिबंध नहीं है (एक ही निर्देशिका में दो समान नाम वाली फाइलें होने के बावजूद) - लेकिन क्लास लोडर द्वारा पाया गया पहला ही इस्तेमाल किया जाएगा (एक अलग मॉड्यूल में पहले से परिभाषित पैकेजों के उपयोग के संबंध में कुछ सीमाएं हैं )
 – 
user16320675
7 जिंदा 2022, 13:36

2 जवाब

सबसे बढ़िया उत्तर

एक वर्ग की पहचान उसके नाम से नहीं, बल्कि उसके पूर्ण-योग्य नाम से होती है, जो कि पैकेज का नाम है और उसके बाद वर्ग का नाम है।

अगर आप किसी पैकेज com.myapp में अपना खुद का String वर्ग बनाते हैं, तो उसका पूर्ण-योग्य नाम com.myapp.String होगा। यह मानक String वर्ग के साथ विरोध नहीं करता है, जिसका पूर्ण-योग्य नाम java.lang.String है।

बेशक, जब आप ऐसा करते हैं तो यह बहुत भ्रमित करने वाला होता है, खासकर क्योंकि java.lang पैकेज में कक्षाएं डिफ़ॉल्ट रूप से आयात की जाती हैं। इसलिए, व्यवहार में आपको कभी भी अपनी खुद की कक्षा String नहीं लिखनी चाहिए, या अपनी खुद की किसी भी कक्षा को मानक पुस्तकालय की कक्षाओं के समान नाम नहीं देना चाहिए (विशेषकर पैकेज java.lang से मानक कक्षाएं)।

3
Jesper 7 जिंदा 2022, 13:22

जैसा कि जेस्पर ने प्रकाश डाला है, एक वर्ग की विशिष्टता उसके पूर्ण रूप से योग्य नाम यानी पैकेज द्वारा निर्धारित की जाती है।

दोनों स्ट्रिंग कक्षाओं को किसी अन्य वर्ग में आयात करने का प्रयास करें, और जब आप इसका उपयोग करने का प्रयास करेंगे तो आप अंतर देखेंगे।

import java.lang.String;
import com.myclass.String;

अब, अस्पष्टता को हल करने के लिए, आपको किसी वर्ग को उसके पूर्णतः योग्य नाम से संदर्भित करने की आवश्यकता है।

0
overhead 7 जिंदा 2022, 13:43