Nerede kullanabileceğiniz konusunda aslında farklılar. A.class
derleme zamanında çalışır, a.getClass()
bir tür örneği gerektirir A
ve çalışma zamanında çalışır.
Bir performans farkı da olabilir. İken A.class
bu 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()
?