Nerede kullanabileceğiniz konusunda aslında farklılar. A.classderleme zamanında çalışır, a.getClass()bir tür örneği gerektirir Ave çalışma zamanında çalışır.
Bir performans farkı da olabilir. İken A.classbu fiili tipini bildiği için derleyici tarafından çözülebilir A, a.getClass()zamanında oluyor sanal yöntem çağrıdır.
Referans olarak, bayt kodunu hedefleyen bir derleyici genellikle aşağıdakiler için aşağıdaki talimatları yayınlar Integer.getClass():
aload_1
invokevirtual #3; //Method java/lang/Object.getClass:()Ljava/lang/Class;
ve aşağıdakiler için Integer.class:
//const #3 = class #16; // java/lang/Integer
ldc_w #3; //class java/lang/Integer
İlki tipik olarak sanal bir yöntem gönderimini içerecektir ve bu nedenle muhtemelen yürütülmesi daha uzun zaman alacaktır. Ancak bu, sonunda JVM'ye bağımlıdır.
A.class.getClass()?