2013-02-26 240 views
17

.class का अर्थ क्या है, उदाहरण के लिए, MyClass.class? मैं समझता हूं कि जब आप एक वर्ग और बिंदु का नाम डालते हैं तो इसका उपयोग अपने स्थिर क्षेत्रों या विधियों तक पहुंचने के लिए किया जाता है, लेकिन यह '.class'क्लास नाम के बाद क्लास का क्या मतलब है

+5

गंभीर रूप से, एक स्पेनिश देशी वक्ता के रूप में, मुझे इस बात से शर्म आती है कि लोग इस तरह के मामलों पर उनकी मदद करने के लिए Google Translator पर अपनी आशा कैसे रखते हैं। –

+0

डेबमोस culpar एक Google अनुवाद entonces। – irreputable

+0

या निराश हो जाएं कि अन्य सभी उपलब्धियों के बावजूद, हमने अभी भी भाषा और समझ में दुनिया को एकजुट करने का मार्ग नहीं रखा है। –

उत्तर

10

SomeClass.class से संबंधित नहीं है Class<SomeClass> प्रकार जो आप उपयोग कर सकते हैं reflection API का उपयोग कर प्रोग्रामिंग।

यदि आप instance.getClass() का उपयोग कर कक्षा का उदाहरण रखते हैं तो आप वही प्रकार प्राप्त कर सकते हैं।

आप documentation here देख सकते हैं। उदाहरण के लिए, आप कर सकते हैं:

  • , खेतों और विधियों, एनोटेशन, आदि
  • आह्वान तरीकों में से नाम प्राप्त वर्ग
  • के नए उदाहरण बना करने के लिए वर्ग का नाम प्राप्त निर्माता मिलता है, सुपर क्लास, पैकेज, आदि
5

जब आप एक वर्ग के नाम के बाद .class लिखते हैं, यह संदर्भ देता Class उद्देश्य यह है कि किसी वर्ग का प्रतिनिधित्व करता है (औपचारिक रूप से, यह एक नामित वर्ग शाब्दिक है)। NombreClase.class का प्रकार Class<NombreClase> है।

उदा। NombreClase.class एक ऐसा ऑब्जेक्ट है जो रनटाइम पर NombreClase वर्ग का प्रतिनिधित्व करता है। यह वही ऑब्जेक्ट है जो NombreClase के किसी भी (प्रत्यक्ष) उदाहरण के getClass() विधि द्वारा वापस किया जाता है।

NombreClase obj = new NombreClase(); 
System.out.println(NombreClase.class.getName()); 
System.out.println(obj.getClass().getName()) 
3

आप अपने कक्षा वस्तु का एक उदाहरण पुनः प्राप्त करने के किसी भी वर्ग के नाम के .class जोड़ सकते हैं।

जब आप Integer.class का उपयोग करते हैं तो आप Class<Integer> का एक उदाहरण संदर्भित करते हैं, जो एक टाइप की गई क्लास ऑब्जेक्ट है।

मैंने हमेशा सोचा कि यह एक क्षेत्रीय सदस्य था जिसे संकलक द्वारा जोड़ा गया था, लेकिन ऐसा लगता है कि यह वास्तव में सिंटैक्टिक चीनी है।

+4

एक स्थिर क्षेत्र तक पहुंचने से पहले, आपको कक्षा की आवश्यकता है, इसलिए कक्षा एक क्षेत्र है तो यह परिपत्र होगा। असल में, 'एक्लास' को बस 'class.forName ("ए")' में संकलित किया गया है, इसलिए जादुई कुछ नहीं। – irreputable

+0

कूल ... धन्यवाद! – jahroy