자바의 정석 - instanceof 연산자

Yohan·2024년 1월 22일
0

instanceof 연산자

  • 참조변수의 형변환 가능여부 확인에 사용. 가능하면 true 반환
  • instanceof 연산자를 통해 형변환을 해도 되는지 확인한 이후에 형변환 진행 !
void doWork(Car c) {
	if (c instanceof FireEngine) { // 1. 형변환이 가능한지 확인
    	FireEngine fe = (FireEngine)c; // 2. 형변환
        fe.water();
    }
}
// 상위 조상들 모두 true 출력 (형변환 가능)
FireEngine fe = new FireEngine();
System.out.println(fe instanceof Object); // true
System.out.println(fe instanceof Car); // true
System.out.println(fe instanceof FireEngine); // true

  • Q. 참조변수의 형변환은 왜 하나요?
  • A. 참조변수(리모콘)을 변경함으로써 사용할 수 있는 멤버의 개수를 조절하기 위해서
FireEngine f = new FireEngine();

Car c (Car)f; // 조상인 Car타입으로 형변환
			  // f의 타입을 Car로 형변환시켜주어 c와 f의 타입을 일치 시킴

f는 FireEngine의 참조변수 이므로 5개 객체를 사용가능하지만 Car로 형변환을 하고난 이후에 4개만 사용가능 (객체가 잘리거나 변하는 것 x, 참조변수(리모콘)을 변경하여 5개 중 4개만 사용가능하게 한 것)

  • Q. instanceof 연산자는 언제 사용하나요?
  • A. 참조변수를 형변환하기 전에 형변환 가능여부를 확인할 때
profile
백엔드 개발자

0개의 댓글