.getClass() 와 .class의 차이점

Language/JAVA 2013. 8. 29. 14:58

두 방법에 의해서 반환되는 Class 인스턴스는 시점에 따라서 달라지는데

.class는 compile time에 결정되고
.getClass()는 rumtime에 결정된다.

간단한 예제 프로그램으로 차이점을 확인할 수 있다.

public class ClassExample {
    public ClassExample()
    {
        printClass();
    }
    final public void printClass()
    {
        System.out.println("ClasExample.class : " + ClassExample.class);
        System.out.println("Sub_ClassExmaple.class : " + Sub_ClassExample.class);
        System.out.println("this.getClass() : " + this.getClass());
    }
   
    public static void main(String[] args) {
        System.out.println("new ClassExample()");
        new ClassExample();
       
        System.out.println("\nnew Sub_ClassExample()");
        new Sub_ClassExample();
    }
}

public class Sub_ClassExample extends ClassExample {
}
----------- output ---------------------------
new ClassExample()
ClasExample.class : class test.ClassExample
Sub_ClassExmaple.class : class test2.Sub_ClassExample
this.getClass() : class test.ClassExample

new Sub_ClassExample()
ClasExample.class : class test.ClassExample
Sub_ClassExmaple.class : class test2.Sub_ClassExample
this.getClass() : class test2.Sub_ClassExample


출처 - http://javafreak.tistory.com/52

: