.class
जावा में क्या मतलब है? उदाहरण के लिए, यदि मैंने नामक एक वर्ग बनाया Print
। क्या Print.class
लौटाता है?
.class
सिंटैक्स के बारे में पूछ रहा है जो केवल .class
फ़ाइल नाम एक्सटेंशन से संबंधित है ।
.class
जावा में क्या मतलब है? उदाहरण के लिए, यदि मैंने नामक एक वर्ग बनाया Print
। क्या Print.class
लौटाता है?
.class
सिंटैक्स के बारे में पूछ रहा है जो केवल .class
फ़ाइल नाम एक्सटेंशन से संबंधित है ।
जवाबों:
जब आप .class
एक वर्ग के नाम के बाद लिखते हैं , तो यह वर्ग शाब्दिक - java.lang.Class
वस्तु का संदर्भ देता है जो
दी गई कक्षा के बारे में जानकारी का प्रतिनिधित्व करता है ।
उदाहरण के लिए, यदि आपकी कक्षा है Print
, तो Print.class
एक ऑब्जेक्ट है जो Print
रनटाइम पर कक्षा का प्रतिनिधित्व करता है। यह वही वस्तु है जिसे getClass()
किसी भी (प्रत्यक्ष) के उदाहरण से विधि द्वारा लौटाया जाता है Print
।
Print myPrint = new Print();
System.out.println(Print.class.getName());
System.out.println(myPrint.getClass().getName());
Writer.class.getDeclaredField("writeBuffer")
:।
Print.class
?
new Intent(this, Activity.class
? क्या class Activity
प्रत्येक वर्ग की तुलना करके यह पता लगाने की कोशिश की जाएगी ?
.class
का उपयोग तब किया जाता है जब कक्षा का कोई उदाहरण उपलब्ध नहीं होता है।
.getClass()
का उपयोग तब किया जाता है जब कक्षा का एक उदाहरण उपलब्ध हो।
object.getClass()
दी गई वस्तु का वर्ग लौटाता है।
उदाहरण के लिए:
String string = "hello";
System.out.println(string.getClass().toString());
यह आउटपुट होगा:
class java.lang.String
यह स्ट्रिंग ऑब्जेक्ट का वर्ग है :)
getClass()
केवल तभी उपयोगी होता है जब आपके पास कक्षा के किसी ऑब्जेक्ट की ओर इशारा करते हुए संदर्भ हो। ClassName.class
वर्ग का कोई उदाहरण न होने पर भी इसका उपयोग किया जा सकता है। उदाहरण के लिए, विचार करें Math.class
। प्रत्येक कुछ स्थितियों के लिए सही है।
.class
और.getClass().
यदि किसी वस्तु का उदाहरण उपलब्ध है, तो अपनी कक्षा को प्राप्त करने का सबसे सरल तरीका है Object.getClass()
.class
सिंटेक्स
यदि प्रकार उपलब्ध है, लेकिन कोई उदाहरण नहीं है, तो .class
प्रकार के नाम के साथ जोड़कर एक वर्ग प्राप्त करना संभव है । यह एक आदिम प्रकार के लिए कक्षा प्राप्त करने का सबसे आसान तरीका भी है।
boolean b;
Class c = b.getClass(); // compile-time error
Class c = boolean.class; // correct
बस स्पष्ट करने के लिए, यह '.class' विधि जावा कोड को संकलित करने के बाद आपके द्वारा देखी जाने वाली बाईटेकोड फ़ाइल का जिक्र नहीं है और न ही ओओपी सिद्धांत में क्लास बनाम ऑब्जेक्ट की अवधारणाओं के बीच एक भ्रम है।
इस '.class' पद्धति का उपयोग जावा में कोड परावर्तन के लिए किया जाता है। आम तौर पर आप अपनी कक्षा के लिए मेटा डेटा इकट्ठा कर सकते हैं जैसे पूर्ण योग्य वर्ग का नाम, स्थिरांक की सूची, सार्वजनिक क्षेत्रों की सूची, आदि।
सभी विवरण प्राप्त करने के लिए इन लिंक (पहले से ऊपर वर्णित) की जाँच करें:
https://docs.oracle.com/javase/tutorial/reflect/class/classNew.html
https://docs.oracle.com/javase/8/docs /api/java/lang/Class.html
जब आप अपनी परियोजना का निर्माण शुरू करते हैं तो आमतौर पर आप रिफ्लेक्शन का उपयोग करने की योजना नहीं बनाते हैं। यह कुछ ऐसा है जिसे आप जानते हैं कि आपको पहले से ही काम कर रहे कोड को प्रबंधित करने की कोशिश करने की आवश्यकता है। कई बार आपको अपने कार्यक्रम के कई उदाहरणों को प्रबंधित करने के लिए इसकी आवश्यकता होती है। हो सकता है कि आप यह निर्धारित करने के लिए प्रत्येक विशेष 'क्लोन' की पहचान करना चाहते हैं कि कुछ पहले से ही परिभाषित है, या फ़ंक्शन की संख्या की गणना करें, या बस अपनी कक्षा के किसी विशेष उदाहरण का विवरण लॉग करें।
यदि कोई उदाहरण उपलब्ध नहीं है, तो .class
वाक्यविन्यास का उपयोग किसी वर्ग के लिए संबंधित क्लास ऑब्जेक्ट को प्राप्त करने के लिए किया जाता है अन्यथा आप क्लास ऑब्जेक्ट प्राप्त करने के लिए getClass () विधि का उपयोग कर सकते हैं। चूंकि, आदिम डेटा प्रकार का कोई उदाहरण नहीं है, इसलिए हमें .class
आदिम डेटा प्रकारों के लिए सिंटैक्स का उपयोग करना होगा ।
package test;
public class Test {
public static void main(String[] args)
{
//there is no instance available for class Test, so use Test.class
System.out.println("Test.class.getName() ::: " + Test.class.getName());
// Now create an instance of class Test use getClass()
Test testObj = new Test();
System.out.println("testObj.getClass().getName() ::: " + testObj.getClass().getName());
//For primitive type
System.out.println("boolean.class.getName() ::: " + boolean.class.getName());
System.out.println("int.class.getName() ::: " + int.class.getName());
System.out.println("char.class.getName() ::: " + char.class.getName());
System.out.println("long.class.getName() ::: " + long.class.getName());
}
}
मुझे लगता है कि यहाँ कुंजी एक वर्ग और एक वस्तु के बीच के अंतर को समझ रही है। ऑब्जेक्ट क्लास का एक उदाहरण है। लेकिन पूरी तरह से ऑब्जेक्ट-ओरिएंटेड भाषा में, एक क्लास भी एक ऑब्जेक्ट है । इसलिए कॉलिंग .class
को उस क्लास के क्लास ऑब्जेक्ट का संदर्भ मिलता है, जिसे बाद में मैनिपुलेट किया जा सकता है।
in a fully object-oriented language, a Class is also an Object
? <प्रशस्ति पत्र की आवश्यकता>
एक वर्ग शाब्दिक एक वर्ग, इंटरफ़ेस, सरणी, या आदिम प्रकार, या छद्म प्रकार शून्य के नाम से मिलकर एक अभिव्यक्ति है, इसके बाद '।' और टोकन वर्ग। JDK 5.0 में एक बदलाव यह है कि वर्ग java.lang.Class सामान्य है java.lang.Class Class<T>
, इसलिए:
Class<Print> p = Print.class;
यहाँ संदर्भ:
https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html
http://docs.oracle.com/javase/tutorial/extra/generics/literals.html
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.8.2