एक क्लास वस्तु एक मेटा वस्तु एक वस्तु के वर्ग का वर्णन की तरह है।इसका उपयोग जावा की प्रतिबिंब क्षमताओं के साथ किया जाता है। आप इसे वास्तविक वर्ग के "ब्लूप्रिंट" की तरह सोच सकते हैं। जैसे आप इस तरह से एक वर्ग कार है:
public class Car {
public String brand;
}
फिर आप एक वर्ग वस्तु जो अपने "कार" वर्ग का वर्णन निर्माण कर सकते हैं।
myCarClass.getName() - returns "Car"
myCarClass.getDeclaredField("brand") - returns a Field object describing the "brand" field
और इतने पर:
Class myCarClass = Class.forName("Car");
अब आप कि कक्षा वस्तु पर अपनी कार वर्ग पर क्वेरी करने के लिए सभी प्रकार कर सकते हैं। प्रत्येक जावा ऑब्जेक्ट में एक विधि getClass() होती है जो क्लास ऑब्जेक्ट को जावा ऑब्जेक्ट की कक्षा का वर्णन करती है। तो अगर आप की तरह कुछ कर सकता है:
Car myCar = new Car();
Class myCarClass = myCar.getClass();
यह भी वस्तुओं आप नहीं जानते के लिए काम करता है, जैसे वस्तुओं आप बाहर से मिलती है:
public void tellMeWhatThisObjectsClassIs(Object obj) {
System.out.println(obj.getClass().getName());
}
आप और इस विधि किसी भी जावा वस्तु खिलाने सकता है यह आपके द्वारा दी गई वस्तु के वास्तविक वर्ग को प्रिंट करेगा।
जावा के साथ काम करते समय, अधिकांश समय आपको कक्षा वस्तुओं के बारे में चिंता करने की आवश्यकता नहीं होती है। हालांकि उनके पास कुछ आसान उपयोग मामले हैं। जैसे वे आपको एक निश्चित वर्ग की वस्तुओं को प्रोग्रामेटिक रूप से कम करने की अनुमति देते हैं, जिसका प्रयोग ऑब्जेक्ट क्रमबद्धता और deserialization के लिए अक्सर किया जाता है (उदाहरण के लिए जावा ऑब्जेक्ट्स को एक्सएमएल और बैक में परिवर्तित करना, अधिकतर वापस)।
Class myCarClass = Class.forName("Car");
Car myCar = myCarClass.newInstance(); // is roughly equivalent to = new Car();
आप इसका उपयोग सभी घोषित क्षेत्रों या अपने वर्ग आदि, जो कुछ मामलों में बहुत उपयोगी है के तरीकों का पता लगाने के कर सकते हैं। तो उदा। अगर आपकी विधि किसी अज्ञात वस्तु को सौंपी जाती है और आपको इसके बारे में और जानना होगा, जैसे कि यह कुछ इंटरफ़ेस इत्यादि को लागू करता है, तो क्लास क्लास आपका मित्र है।
इतने लंबे समय कहानी कम, कक्षा, फील्ड, विधि, आदि वर्ग है जो java.lang.reflect पैकेज में कर रहे हैं आप अपने परिभाषित कक्षाएं, विधियां, फ़ील्ड कॉल तरीकों सभी का विश्लेषण, उनमें से नया उदाहरण बना करने की अनुमति अन्य सामानों के प्रकार और वे आपको रनटाइम पर गतिशील रूप से ऐसा करने की अनुमति देते हैं।
और इसके बारे में सोचना मजेदार है। 'कक्षा' वर्ग 'ऑब्जेक्ट' से ही विरासत में मिलता है। 'क्लास.क्लास' एक 'कक्षा' ऑब्जेक्ट देता है जो 'कक्षा' वर्ग का प्रतिनिधित्व करता है। आप प्रतिबिंब पर प्रतिबिंबित कर सकते हैं। मेरा सिर एस्प्लोइड। – cdhowie
@cdhowie रूबी का अधिक उपयोग नहीं किया है, हुह? :-) –
@pst: मेरे पास है। यह मुझे लोगों को चोट पहुंचाना चाहता है।[इस कई] के साथ कोई भी भाषा/ढांचा (http://ruby-doc.org/core/classes/Object.html) इसके रूट प्रकार पर विधियों को दफनाया जाना चाहिए। इसमें PHP-style tack-random-crap-on-the-API-बिना-किसी भी पूर्व-विचार सिंड्रोम है। आग लगाना ... – cdhowie