두 방법에 의해서 반환되는 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

'Dev > Java' 카테고리의 다른 글

Java Programming Language: Design Principles and Proposals  (0) 2007.11.29
TimeZone Bug  (0) 2007.11.14
eclipse 에서 라이브러리 추가하기  (0) 2007.10.18
Posted by yeori
,