MyClass.class
और MyClass.getClass()
को कॉल करने के बीच क्या अंतर है, दोनों java.lang.Class
लौटने लगते हैं। क्या कोई सूक्ष्म भेद है या क्या उन्हें एक दूसरे के रूप में इस्तेमाल किया जा सकता है? इसके अलावा, MyClass.class
सुपरक्लास Class
कक्षा की सार्वजनिक संपत्ति है? (मुझे पता है कि यह अस्तित्व में है लेकिन javadocs में इसका कोई उल्लेख नहीं दिख रहा है)MyClass.class और MyClass.getClass()
उत्तर
एक एक उदाहरण विधि है, इसलिए यह विशेष वस्तु का वर्ग लौटाता है, दूसरा कक्षा निरंतर है (यानी संकलन समय)।
Class n = Number.class;
Number o = 1;
o.getClass() // returns Integer.class
o = BigDecimal.ZERO;
o.getClass(); // returns BigDecimal.class
दोनों मामले क्लास ऑब्जेक्ट के उदाहरण लौटाते हैं, जो किसी विशेष जावा क्लास का वर्णन करते हैं। एक ही कक्षा के लिए, वे एक ही उदाहरण लौटाते हैं (प्रत्येक वर्ग के लिए केवल एक वर्ग वस्तु है)।
एक तीसरा रास्ता कक्षा वस्तुओं को पाने के लिए किया जाएगा
Class n = Class.forName("java.lang.Number");
ध्यान रखें कि यह भी इंटरफेस में रखें है कक्षा वस्तुओं (जैसा कि उपरोक्त संख्या के रूप में)।
इसके अलावा, MyClass.class superclass क्लास क्लास की सार्वजनिक संपत्ति है?
यह एक भाषा कीवर्ड है।
MyClass में एक स्थिर getClass विधि नहीं है, दूसरे शब्दों में, आप MyClass.getClass() को कॉल नहीं कर सकते हैं, इसके बजाय आपको इसे कॉल करने के लिए (new MyClass())। GetClass() को कॉल करने की आवश्यकता है।
getClass() एक MyClass.class ऑब्जेक्ट लौटाएगा। तो दूसरे शब्दों में, MyClass.class परिणामस्वरूप ऑब्जेक्ट है जबकि getClass() एक विधि है। getClass() विधि मामलों में जहां आप वस्तु के वास्तविक वर्ग पता नहीं है में उपयोगी है, उदाहरण के लिए:
public void someMethod(Object o) {
if(o.getClass().equals(Set.class)) {
// The object is a set
} else if(o.getClass().equals(List.class)) {
// The object is a List
}
}
ध्यान दें कि उपरोक्त कोड उदाहरण सबसे अच्छा संभव नहीं है, मैं सिर्फ कोशिश कर रहा हूँ दिखाएं कि इसका इस्तेमाल कैसे किया जा सकता है। एक ही कार्यक्षमता के साथ if(o instanceof Set) { ...}
.getClass()
, वस्तु के क्रम वर्ग रिटर्न तो यह संशोधित किया जा सकता है जब आप दूसरी तरफ चर
.class
के वर्ग बदलने के हमेशा के वर्ग निरंतर वापसी प्राप्त किया जा सकता "प्रकार"
नोट
क्रम वर्ग प्रकार वर्ग के रूप में ही होता है, दोनों बराबर हो जाएगा। उदाहरण:
Long x = new Long(2);
Class c1 = Long.class;
Class c2 = x.getClass();
//c1==c2
What's the difference between calling MyClass.class and MyClass.getClass()
अपने सभी प्रश्न का शीर्षक पहले थोड़ा भ्रामक है! .getClass() is a method defined in java.lang.Object
इसलिए जावा में कोई ऑब्जेक्ट इसे कॉल कर सकता है जहां क्लास को क्लास पर ही कॉल किया जाता है (सार्वजनिक स्थिर चर जैसे)। तो सवाल यह वास्तविक मतभेद
.getClass() java.lang.Object में एक देशी जावा तरीका है करने के लिए (जावा नामकरण सम्मेलनों के लिए चिपके हुए) होना चाहिए
What's the difference between calling MyClass.class and myClassObject.getClass()
अब।यह विधि java.lang.Class ऑब्जेक्ट को उस ऑब्जेक्ट के runtime class
से संबंधित करेगी जिस पर इसे लागू किया जाता है। तो
Test t = new TestSubClass();
Class c2 = t.getClass();
System.out.println(c2);
class TestSubClass
जहां के रूप में .class स्थिर का मूल्यांकन (संकलन समय पर जाना जाता है) वर्ग वापस आ जाएगी प्रिंट होगा। यह वास्तव में कक्षा वस्तु वास्तविक object.So
Test t = new TestSubClass();
Class c2 = Test.class;
System.out.println(c2);
class Test
- 1. सिंक्रनाइज़ (यह) बनाम सिंक्रनाइज़ (MyClass.class)
- 2. EclEmma क्यों सिंक्रनाइज़ (MyClass.class) को कवर नहीं करता है?
- 3. इंटेलिजे MyClass.class (ऐसी कोई फ़ाइल या निर्देशिका नहीं) अनुप्रयोग चलाते समय
- 4. कोई भी (MyClass.class) जो वास्तव में उत्तीर्ण वर्ग के प्रकार के वर्गों से मेल खाता है?
- 5. log4j और वेबलॉगिक: डुप्लिकेट लॉग संदेश
- 6. संदिग्ध संदर्भ
- 7. AbstractApplicationContext.getBeansOfType() और getBean() के बारे में क्यू
- 8. हर बार मुझे इसकी आवश्यकता होती है या प्रति कक्षा
- 9. बचें हाइबरनेट मापदंड क्वेरी के साथ प्रकार सुरक्षा चेतावनी इस में
- 10. ग्रहण
- 11. क्या पैकेज ऑब्जेक्ट में सामान्य रूप से बनाम कक्षा को घोषित करने के बीच कोई वास्तविक अंतर है?
- 12. क्लासपाथ में एक जार के साथ जावा क्लास कैसे चलाएं?
- 13. गूगल Guice का उपयोग कर लकड़हारा इंजेक्षन कैसे
- 14. मुझे अपनी PHP कक्षा फ़ाइल का नाम क्या देना चाहिए?
- 15. "#", "$", "%", "&", और "_" "\ #", "\ $", "\%", "\ &", और "\ _"
- 16. विभिन्न पैकेजों में एक ही नाम के साथ दो वर्ग का उपयोग कैसे करें?
- 17. मैं जावा 6 का उपयोग करके पारित कक्षा के समान प्रकार के किसी ऑब्जेक्ट का उदाहरण कैसे लौटा सकता हूं?
- 18. जावा - कक्षाओं की तुलना?
- 19. कैसे जांचें कि गतिविधि अभी भी ढेर में है या नहीं?
- 20. प्रदर्शन और सॉर्टिंग, और mysql और php
- 21. "और" और "या"
- 22. "बिटवाइस और" और सी ++
- 23. getters और setters और
- 24. और बनाम * और | बनाम +
- 25. सीएसएस "और" और "या"
- 26. {} और {}
- 27. और
- 28. $ (...) और `...`
- 29. $ * और $ @
- 30. और
आपका क्या मतलब है प्रिंट होगा एक "वर्ग निरंतर" द्वारा के संदर्भ प्रकार की ओर इशारा करते के लिए इसी है? जब आप "कक्षा n = Number.class" असाइन करते हैं; एन का मूल्य क्या होगा? – Mocha
एन कक्षा का एक उदाहरण असाइन किया गया है, ऑब्जेक्ट संख्या "वर्ग" (जो वास्तव में एक इंटरफ़ेस है) का वर्णन करता है। – Thilo