instanceof
- 다형성에서는 참조형 변수는 이름 그대로 다양한 자식을 대상으로 참조 가능하기에 어떤 인스턴스를 참조하는 지 확인이 필요한 경우 존재
- 인스턴스의 타입을 확인하는 키워드
- "객체 instanceof 클래스" 형식으로 사용
사용 예시
new Parent() instanceof Parent
Parent p = new Parent() //같은 타입 true
new Child() instanceof Parent
Parent p = new Child() //부모는 자식을 담을 수 있다. true
new Parent() instanceof Child
Child c = new Parent() //자식은 부모를 담을 수 없다. false
new Child() instanceof Child
Child c = new Child() //같은 타입 true
- 오른쪽에 있는 타입에 왼쪽에 있는 인스턴스의 타입이 들어갈 수 있으면 true, 불가능하면 false
- 형 변환이 불가능한 경우 즉, 타입이 상위 클래스도 하위 클래스도 아닌 경우 에러 발생
자바 16 - Pattern Matching for instanceof
// 자바 16 이전
if (parent instanceof Child) {
Child child = (Child) parent;
child.callMethod();
}
// 자바 16
if (parent instanceof Child child) {
child.callMethod();
}
- 자바 16부터는 instanceof를 사용하면서 동시에 변수 선언 가능