Используйте a.getClass
, когда у вас есть экземпляр класса / типа, и вы хотите получить его точный тип. в то время как a.class
используется, когда у вас есть type
, и вы хотите создать его экземпляр. Также getClass()
возвращает тип экземпляра экземпляра во время выполнения .class
во время компиляции. Учитывая производительность getClass()
и .class
, .class
имеет лучшую производительность, чем getClass()
. Пример:
public class PerfomanceClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
long time=System.nanoTime();
Class class1="String".getClass();
class1="String".getClass();
class1="String".getClass();
class1="String".getClass();
System.out.println("time (getClass()) :"+(System.nanoTime()-time)+" ns");
long time2=System.nanoTime();
Class class2=String.class;
class2=String.class;
class2=String.class;
class2=String.class;
System.out.println("time (.class):"+(System.nanoTime()-time2)+" ns");
}
}
Выход:
time (getClass()) : 79410 ns
time (.class) : 8032 ns