सार्वजनिक इनपुट स्ट्रीम क्यों मिलता है रिसोर्सएस्ट्रीम (स्ट्रिंग नाम) कक्षा वर्ग में है? यह सिर्फ फाइल की इनपुटस्ट्रीम देता है जो जार फ़ाइल में है और क्लास क्लास के साथ कोई संबंध नहीं है। इसलिए यह स्थिर विधि हो सकती है और यह किसी भी वर्ग में हो सकती है।क्यों क्लास क्लास में रिसोर्सएस्ट्रीम विधि है?
7
A
उत्तर
9
वहाँ वर्ग के लिए एक रिश्ता है:
- वर्ग के पैकेज को ध्यान में रखा जाता है - अगर आप
foo.bar.SomeClass
के लिए वर्ग पर कॉलgetResourceAsStream("baz.txt")
इसके लिए/foo/bar/baz.txt
- classloader दिखेगा देना संसाधनों को पहली जगह खोजने के लिए ध्यान में रखा जाता है - यदि यह एक स्थिर विधि थी, तो यह कैसे पता चलेगा कि कौन सी जार फाइलें (आदि) देखने के लिए? वहाँ प्रणाली classloader
1
यह सिर्फ फ़ाइल जो जार फ़ाइल में है की InputStream दे ...
गलत की तुलना में जीवन के लिए अधिक है। सभी क्लासलोडर नियमित JAR फ़ाइल से संसाधन लोड नहीं करते हैं।
- कुछ क्लासलोडर निर्देशिका से लोड होते हैं।
- कुछ क्लासलोडर नेटवर्क से लोड होते हैं।
- कुछ क्लासलोडर एकाधिक स्रोतों से लोड होते हैं।
इस जटिलता के सभी आप से छिपा हुआ है जब आप इस मामले में Class
के माध्यम से ClassLoader
एपीआई का उपयोग करें।
... और कक्षा वर्ग के साथ कोई संबंध नहीं है।
गलत। @ जोन स्कीट का जवाब देखें। ध्यान दें कि Class.getResourceAsStream(String)
पर कॉल करना एक संसाधन देता है जो कक्षा के समान सुरक्षा संदर्भ से संबंधित है। यदि उपयोग में एकाधिक क्लासलोडर/सुरक्षा संदर्भ हैं तो यह बहुत महत्वपूर्ण हो सकता है।
संबंधित मुद्दे
- 1. क्लास विधि
- 2. क्यों क्लास क्लास + $ 1 (या $ *)
- 3. क्लास/विधि
- 4. "टाइप क्लास" नामक "टाइप क्लास" क्यों है?
- 5. क्लास विधि __instancecheck__
- 6. सी # बेस क्लास विधि
- 7. क्यों BinaryString इंटीजर क्लास में एक उदाहरण विधि नहीं है?
- 8. ऑब्जेक्ट क्लास में GetHashCode क्यों है?
- 9. उद्देश्य-सी: क्लास विधि
- 10. डायनामिक क्लास विधि रिज़ॉल्यूशन
- 11. बेस क्लास अधिभारित विधि
- 12. सॉकेट क्लास प्रेषण विधि
- 13. क्लास विधि सजावट
- 14. स्ट्रिंग क्लास फ़ाइनल क्यों है?
- 15. कोड व्युत्पन्न क्लास विधि निष्पादित करता है, लेकिन बेस क्लास विधि
- 16. क्लास
- 17. केस क्लास कॉपी() विधि abstraction
- 18. नेस्टेड क्लास - नेस्टेड क्लास को पेरेंट क्लास
- 19. पाइथन डेटाटाइम क्लास में 'सेटिमस्टैम्प' विधि क्यों है, लेकिन 'टोटीमेस्टैम्प' विधि नहीं है?
- 20. AsyncTask क्लास पर PostExecute विधि
- 21. मैं एक सुपर क्लास विधि
- 22. क्या क्लास एक विधि या फ़ील्ड है?
- 23. स्ट्रेटोटाइम() डेटटाइम क्लास एनालॉग विधि
- 24. रेल में स्कॉप बनाम क्लास विधि 3
- 25. Eigenclasses में रूबी क्लास विधि बनाम तरीके
- 26. क्लास
- 27. एक्सटेंशन क्लास
- 28. रूबी क्लास प्रारंभ (कन्स्ट्रक्टर) निजी विधि या सार्वजनिक विधि है?
- 29. क्लास
- 30. पायथन बेस क्लास विधि कॉल: अप्रत्याशित व्यवहार