불로구

26강. (JAVA) 자바 - 객체 타입 확인 (instanceof) (2) 본문

프로그래밍/JAVA

26강. (JAVA) 자바 - 객체 타입 확인 (instanceof) (2)

맹이맹이 2020. 6. 16. 23:51
반응형

객체 타입 확인

- 강제 타입 변환은 구현 객체가 인터페이스 타입으로 변환되어 있는 상태에서 가능하다!

- 하지만 어떤 객체가 변환되어 있는지 알 수 없는 상황에서 가제 타입 변환을 하면 예외가 발생한다!

- 이러한 상황을 대비해서 우리는 객체의 타입을 확인해야 한다.

키워드

- A instanceof B

- instanceof는 인터페이스 타입에서도 사용할 수 있다

인터페이스 타입으로 자동 변환된 매개값을 메소드 내에서 다시 구현 클래스 타입으로 강제 변환해야 한다면 매개값이 어떤 객체인지 instanceof를 사용해서 확인하고 강제 변환을 해야 한다.

 

class A {
	
}
class B extends A{
	
}

public class Test {
	public static void main(String[] args) {
		A a = new B();		
		B b = new B();
		if( b instanceof A){
			System.out.println("변환 가능");
		}else{
			System.out.println("변환 불가능");
		}
		System.out.println("===============");
		if( a instanceof B){
			System.out.println("변환 가능");
		}else{
			System.out.println("변환 불가능");
		}
		System.out.println("===============");
		
		A a1 = new A();
		if( a1 instanceof A){
			System.out.println("변환 가능");
		}else{
			System.out.println("변환 불가능");
		}
		System.out.println("===============");
		if( a1 instanceof B){
			System.out.println("변환 가능");
		}else{
			System.out.println("변환 불가능");
		}
		System.out.println("===============");
		
	}
}

} }

마지막 출력을 보면 장제 타입 변환의 조건 중 하나인 자식 타입이 부모 타입으로 변환되어 있어야 강제 변환이 가능한데, 자식 타입이 부모 타입으로 변환되어 있지 않기 때문에 변환 불가능이 출력되었다!

즉, 정리하자만

instanceof 연산자는 객체가 어떤 타입인지 조사할 때 사용하며, 주로 강제 타입 변환 전에 변환이 가능한지 조사할 때 사용한다!

혹시나 궁금한 점은 댓글로 남겨주세요!

Do it! 자바 프로그래밍 입문 : 개발 10년 강의 10년 명강사의 기초튼튼 코딩 밥상, 이지스퍼블리싱 혼자 공부하는 자바:JAVA 8 & 11 지원/무료 동영상 강의 제공, 한빛미디어 Java의 정석:최신 Java 8.0 포함, 도우출판

코멧 일회용 마스크, 블랙, 50개입
반응형
Comments