isAssignableFrom vs instanceof

최승아·2021년 11월 5일
1

1. isAssignableFrom

정의

  • Class를 구분하여 어떤 class나 interface를 상속 구현했는지 체크하는 메소드
  • 런타임에 동적으로 확인할때

B.class.isAssignableFrom(a.getClass())

  • B 객체로 표현되는 클래스가 a의 슈퍼클래스 또는 슈퍼인터페이스일때 👉 True return
  • Dance (interface)가 this.getClass() (현재클래스)의 슈퍼인터페이스일때 Dance (interface)로 형변환해서 구현된 메소드 dance() 출력

2. instanceof

유사품 instanceof 정의

  • object를 구분하여 어떤 class나 interface를 상속 구현했는지 체크하는 연산자

a instanceof B

  • 객체 instanceof 클래스

  • 예시 #1
    1.parent instanceof Parent : 부모가 본인집을 찾았으니 true
    2.child instanceof Parent : 자식이 상속받은 부모집을 찾았으니 true (상속을 받았으니 자기집이라해도 무방하다?)
    3.parent instanceof Child : 부모가 자식집을 찾았으니 false (자식집은 자식집이지 부모집은 아니니까)
    4.child instanceof Child : 자식이 본인집을 찾았으니 true

  • 예시 #2

    1.this(현재 객체) instanceof Mammal : 현재 객체가 Mammal에 속해있는지 확인되면 부모인 Mammal로 형변환해서 Mammal class에 구현된 mammalRun() 메소드 실행


출처: https://mine-it-record.tistory.com/120 [나만의 기록들] | [JAVA] 자바_instanceof (객체타입 확인)

profile
⭐ 개발 정리 공간 ⭐

0개의 댓글