getClassinstanceof를 동시에 활용하는 예제다. 변수가 참조하고 있는 객체를 확인하는 instanceof, 현재 참조하고 있는 클래스를 확인할 수 있는 getClass의 개념을 확실히 이해하고 넘어가자.

 


class Element {int atomicNumber;}

class Point extends Element{int x, y;}

 

class InstanceofTest {

public static void main(String[] args) {

 

Element e = new Element();

Point p = new Point();

 

//p=e; // ElementPoint로 전환될 수 없다

//p=(Point)e; // 컴파일은 되나 실행은 에러난다(부모가 자식이 될 수 없다)

System.out.println("1. e의 레퍼런스 구조 : " + e.getClass());

System.out.println("1. p의 레퍼런스 구조 : " + p.getClass());

System.out.println("1. e instanceof Point" + (e instanceof Point) + "\n\n");

if(e instanceof Point){

System.out.println("Test 1: I get your Point");

}

 

e=p;

System.out.println("2. e의 레퍼런스 구조 : " + e.getClass());

System.out.println("2. p의 레퍼런스 구조 : " + p.getClass());

System.out.println("2. e instanceof Point" + (e instanceof Point) + "\n\n");

 

if(e instanceof Point){

System.out.println("Test 2: I get your Point");

 

System.out.println("3. e의 레퍼런스 구조 : " + e.getClass());

System.out.println("3. p의 레퍼런스 구조 : " + p.getClass());

System.out.println("3. p instanceof Element" + (p instanceof Element) + "\n\n");

}

if(e instanceof Element){

System.out.println("Test 1: I get your Point");

}

}

}

 

<결과>

1. e의 레퍼런스 구조 : class classes.Element

1. p의 레퍼런스 구조 : class classes.Point

1. e instanceof Pointfalse

 

2. e의 레퍼런스 구조 : class classes.Point

2. p의 레퍼런스 구조 : class classes.Point

2. e instanceof Pointtrue

 

Test 2: I get your Point

3. e의 레퍼런스 구조 : class classes.Point

3. p의 레퍼런스 구조 : class classes.Point

3. p instanceof Elementtrue

 

Test 1: I get your Point


+ Recent posts