정리

아무 메서드도 담고 있지 않고, 단지 자신을 구현하는 클래스가 특정 속성을 가짐을 표시해주는 인터페이스를 마커 인터페이스라고 한다. Serializable 인터페이스가 좋은예이다. 마커 애너테이션의 등장으로 마커 인터페이스는 구식이라는 이야기는 사실이 아니다. 마커 인터페이스는 마커 애너테이션 보다 두가지 면에서 낫다 첫번째, 마커 인터페이스는 이를 구현한 클래스의 인스턴스들을 구분하는 타입으로 쓸수 있으나 마커 애너테이션은 그렇지 않다. 두번째, 적용 대상을 더 정밀하게 지정할 수 있다. 반대로 마커 애너테이션은 마커인터페이스보다 나은점으로는 거대한 애너테이션 시스템의 지원을 받는다는 점을 들 수 있다.

핵심정리

마커 인터페이스와 마커 애너테이션은 각자의 쓰임이 있다. 새로 추가하는 메서드 없이 단지 타입 정의가 목적이라면 마커인터페이스를 선택하자. 클래스나 인터에스 외의 프로그램 요소에 마킹해야 하거나, 애너테이션을 적극 활용하는 프레임 워크의 일브로 그 마커를 편입시키고자 한다면 마커 애너테이션이 올바른 선택이다. 적용대상인 elementType.TYPE 인 마커 애너테이션을 작성하고 있다면, 잠시 여유를 갖고 정말 애너테이션으로 구현하는게 옳은지, 혹은 마커 인터페이스가 낫지는 않을지 곰곰이 생각해 보다.