6장_아이템41 - ririkat/effective-java GitHub Wiki

아이템41. 정의하려는 것이 타입이라면 마커 인터페이스를 사용하라


타입 정의를 할 때는 마커 인터페이스와 마커 애너테이션을 사용할 수 있다. 이 둘의 각 쓰임을 알아보자.

마커 인터페이스
  • 아무 메서드도 담고 있지 않고, 구현하는 클래스가 특정 속성을 가짐을 표시해주는 인터페이스 ex. Serializable 인터페이스
  • 새로 추가하는 메서드 없이 단지 타입 정의가 목적인 경우 사용

마커 애너테이션
  • 아이템39 내용 참고
  • 클래스와 인터페이스 외의 프로그램 요소에 마킹해야할 때 or 애너테이션을 활발히 활용하는 프레임워크에서 사용

마커 인터페이스 vs 마커 애너테이션
  • 마커 인터페이스의 장점
    • 구현 클래스의 인스턴스들을 구분하는 타입으로 쓸 수 있다. (컴파일타임에 오류를 잡을 수 있음)
    • 적용 대상을 더 정밀하게 지정할 수 있다.

  • 마커 애너테이션의 장점
    • 거대한 애너테이션 시스템의 지원을 받는다.
⚠️ **GitHub.com Fallback** ⚠️