반응형
Notice
Recent Posts
Recent Comments
Link
불로구
26강. (JAVA) 자바 - 객체 타입 확인 (instanceof) (2) 본문
반응형
객체 타입 확인
- 강제 타입 변환은 구현 객체가 인터페이스 타입으로 변환되어 있는 상태에서 가능하다!
- 하지만 어떤 객체가 변환되어 있는지 알 수 없는 상황에서 가제 타입 변환을 하면 예외가 발생한다!
- 이러한 상황을 대비해서 우리는 객체의 타입을 확인해야 한다.
키워드
- 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 연산자는 객체가 어떤 타입인지 조사할 때 사용하며, 주로 강제 타입 변환 전에 변환이 가능한지 조사할 때 사용한다!
혹시나 궁금한 점은 댓글로 남겨주세요!
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
28강. (JAVA) 자바 - 인터페이스(interface) (0) | 2020.06.21 |
---|---|
27강. (JAVA) 자바 - 추상 클래스, 추상화 (0) | 2020.06.19 |
25강. (JAVA) 자바 - 타입 변환 & 다형성 (1) (0) | 2020.06.16 |
24강. (JAVA) 자바 - 부모 메소드 호출(super) & final (0) | 2020.06.16 |
23강. (JAVA) 자바 - 오버라이딩(Overriding) (0) | 2020.06.15 |
Comments