আপনি সেগুলি কোথায় ব্যবহার করতে পারবেন সে সম্পর্কে এগুলি আসলে আলাদা। 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()
?