[JAVA] 객체 타입 확인 instanceof

지수·2021년 8월 3일
1

플레이데이터

목록 보기
8/50
post-thumbnail

1. instanceof란?

  • 객체 타입을 비교 연산자
  • 형변환 가능 여부 확인 true / false 반환
  • 전혀 연관성이 없는 타입과는 비교 불가(문법 오류)
  • 상속 관계가 아니면 비교 자체가 불가함
  • 다형성은 상속 관계에서만 성립하기 때문에 객체 타입 비교도 다형성이 성립된 상태에서만 의미 있음

2. instanceof 활용 코드

  • v1의 타입인 Integer는 Object와 상속 관계(다형성 O)
  • String은 Integer와 아무 관계가 없기 때문에 syntax error
@Test
public void m1() {
	Integer v1 = 3;  // new Integer(3)  // Integer 객체 생성, 단 Object의 자식(다형성)
	System.out.println(v1 instanceof Object);  // true
	System.out.println(v1 instanceof Integer); // true
		
	// System.out.println(v1 instanceof String);  // syntax error
	// 전혀 연관성 없는 애들끼리 비교하려하면 syntax error
	}
  • o1의 타입인 Object는 String, Integer와 상속 관계(다형성 O)
    => syntax erro는 나지 않고, 객체 타입을 비교하여 결과 반환
@Test
public void m2() {
	// 생성은 자식 String이지만 대입될 때 Object 타입으로 변환
	Object o1 = "string";
		
	// o1 변수가 참조하는 객체의 타입이 Object 타입?
	System.out.println(o1 instanceof Object);  // true
		
	// o1 변수가 참조하는 객체의 타입이 String 타입?
	System.out.println(o1 instanceof String);  // true
		
	// 무관한 타입이라서 false 출력
	System.out.println(o1 instanceof Integer);  // false
	// Integer가 Object를 상속받기 때문에 이건 syntax error가 아님
	}
}
profile
사부작 사부작

0개의 댓글