instanceof 식의 오른쪽에 있는 클래스/인터페이스 타입을 확장/구현하지 않고 하위 클래스가 없는 클래스/인터페이스 타입이 있는 instanceof 식을 보고합니다.
라이브러리 코드로 의도되긴 하였으나 프로젝트에서 선언된 클래스의 어떠한 인스턴스도 instanceof 테스트를 통과할 수 없기 때문에 이러한 구조는 오류를 일으키기 쉽습니다.
예:
class Foo { }
interface Bar { }
class Main {
void test(Foo f, Bar b) {
if (f instanceof Bar) { // 문제
System.out.println("fail");
}
if (b instanceof Foo) { // 문제
System.out.println("fail");
}
}
}