instanceof 표현식 또는 클래스 상등 표현식인 if-else 문의 체인을 보고합니다(예: String.class와 비교).
일반적으로 해당 구문은 타입 테스트의 명시적 체인보다는 다형적 메서드 호출을 통해 타입 기반 디스패치가 수행되도록 지시하는 객체 지향 설계의 실패를 의미합니다.
예:
double getArea(Shape shape) {
// 경고: 추상화에 실패했습니다.
// shape 인터페이스에서 getArea()
// 추상 메서드를 선언하고
// 모든 상속자에 구현하는 것이 좋습니다.
if (shape instanceof Point) {
return 0;
}
if (shape instanceof Circle) {
return Math.PI *
Math.pow(((Circle) shape).radius(), 2);
}
if (shape instanceof Rectangle) {
return ((Rectangle) shape).width() *
((Rectangle) shape).height();
}
throw new IllegalArgumentException();
}
하단의 체크박스를 사용하여 라이브러리 클래스의 instanceof 표현식을 무시할 수 있습니다.