वे वास्तव में भिन्न हैं जहां आप उन्हें उपयोग कर सकते हैं। A.classसंकलित समय पर काम करता है जबकि a.getClass()एक प्रकार की आवृत्ति की आवश्यकता होती है Aऔर रनटाइम पर काम करता है।
प्रदर्शन में अंतर भी हो सकता है। जबकि A.classसंकलक द्वारा हल किया जा सकता है क्योंकि यह वास्तविक प्रकार जानता है A, a.getClass()रनटाइम पर हो रही एक आभासी विधि कॉल है।
संदर्भ के लिए, बायकटोड पर एक संकलक लक्ष्यीकरण आम तौर पर निम्नलिखित निर्देश देता है Integer.getClass():
aload_1
invokevirtual #3; //Method java/lang/Object.getClass:()Ljava/lang/Class;
और निम्नलिखित के लिए Integer.class:
//const #3 = class #16; // java/lang/Integer
ldc_w #3; //class java/lang/Integer
पूर्व में आमतौर पर एक आभासी विधि प्रेषण शामिल होता है और इसलिए संभवतः निष्पादित होने में अधिक समय लगता है। हालांकि अंत में जेवीएम पर निर्भर है।
A.class.getClass()?