2012-01-12 22 views
20

जावा में किसी भी वर्ग में एक क्लास है, मैं जानना चाहता हूं। क्लास एक स्थिर विधि है या नहीं? या यह एक सार्वजनिक स्थैतिक क्षेत्र है?क्या क्लास एक विधि या फ़ील्ड है?

boolean alwaysTrue = (String.class == Class.forName("java.lang.String")); 
+9

के किसी भी (प्रत्यक्ष) उदाहरण के getClass() विधि द्वारा दिया जाता है कि मैं पढ़ा है और अपने प्रश्न को फिर से पढ़ने के तीन बार, और मुझे डर है कि मैं कोई मतलब नहीं कर सकते इसका – NPE

+2

@aix: जावा में, सभी वर्ग (उदाहरण के लिए, 'स्ट्रिंग') में * [वर्ग शाब्दिक] है (http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#250782) * ('.class') जो उस वर्ग के लिए [' class'] (http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html) उदाहरण है। उदा।, 'String.class == कक्षा .forName ("java.lang.String") '(क्लासलोडर के आसपास किनारे के मामलों को छोड़कर)। –

+1

@ टीजेड्रोडर: ओह। मैंने सोचा कि वह कक्षा * फाइलों के बारे में बात कर रहा था * :-) – NPE

उत्तर

30

इसका न तो।
यह एक अंतर्निहित भाषा सुविधा (एक वर्ग शाब्दिक) है जो सार्वजनिक स्थिर अंतिम क्षेत्र की तरह दिखता है।

+4

विशेष रूप से, एक * वर्ग शाब्दिक *: http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#250782 –

4

https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.8.2

यह न तो है। यह उस वर्ग के लिए Class ऑब्जेक्ट को संकलित समय पर मूल्यांकन किया गया एक अभिव्यक्ति है।

+0

पुराने संस्करण का उपयोग करते हुए, Tsk। ;-) –

+0

तीसरा (वर्तमान) संस्करण शायद एक बेहतर लिंक है; यह दूसरे संस्करण की तुलना में अधिक जानकारी भी प्रदान करता है। –

+0

पर्याप्त मेला, मैं संपादित करूंगा। – Viruzzo

8

जब आप कक्षा नाम के बाद .class लिखते हैं, तो यह Class ऑब्जेक्ट का संदर्भ देता है जो दिए गए वर्ग का प्रतिनिधित्व करता है। .class का उपयोग तब किया जाता है जब कक्षा उपलब्ध नहीं होती है।

उदाहरण के लिए, यदि आपकी कक्षा Print है (यह अनुशंसा की जाती है कि कक्षा का नाम अपरकेस अक्षर से शुरू होता है), तो Print.class एक ऑब्जेक्ट है जो रनटाइम पर क्लास प्रिंट का प्रतिनिधित्व करता है। यह है एक ही वस्तु Print.

Print myPrint = new Print(); 
System.out.println(Print.class.getName()); 
System.out.println(myPrint.getClass().getName()); 
+1

किसी वर्ग का उदाहरण वर्ग प्रकार का प्रतिनिधित्व करने वाली वस्तु के समान नहीं है – Val

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