본문 바로가기

이야기/용어사전

Java instanceof 사용이유 및 주의사항

  • 자료형이 무엇인지 궁금할 때 알아내기 위하여 사용한다.
  • 하지만 SOLID 원칙에 위배되는 항목이 많으므로 최대한 자제해야 한다.
  • 사용할 때는 [특정 자료형]인지 아닌지 궁금할 때 사용하는 것을 추천한다.
  • [어느 자료형]인지 궁금해서 사용하는 것은 자제해야 한다.
  • [어느 자료형]인지 궁금하다면, 개별 자료형을 알아내는 클래스를 별개로 다형성을 이용해서 구현하라.

 

  • 왜 SOLID 원칙에 위배되는가?
  • 자료형을 알고 싶은데, 객체가 무엇인지 어떤 정보를 반환하는지, 불필요한 정보를 노출한다. (캡슐화)
  • 변경이나 추가시 instanceof를 사용하고 있는 모든 곳을 수정해야 한다. (개방폐쇄원칙)
  • 해당 클래스뿐 아니라 클래스의 인터페이스의 구현체를 모두 알아야 하는 불필요한 책임이 부가된다. (단일책임원칙)
  • 더불어, 모든 구현체를 확인해야 하므로 성능도 안 좋다.