본문 바로가기

개발이야기/Effective Java

[Effective Java]자료형을 정의할 때 표식 인터페이스를 사용하라


마커 인터페이스 혹은 표식 인터페이스(marker interface)는 아무 메서드도 선언하지 않는 인터페이스이다.(자세한 내용 참조 블로그)
(Ex. Cloneable, serializable,Eventlistener,Remote,RandomAccess,EnterpriseBean 등)


표식 어노테이션 vs 표식 인터페이스

  • 표식 인터페이스는 표식이 붙은 클래스가 만드는 객체들이 구현하는 자료형이라는점, 표식 어노테이션은 자료형이 아니다.
  • 표식 인터페이스는 적용 범위를 좀더 세밀하게 지정할 수 있기 때문에 표식 어노테이션보다 낫다.

그럼 어떤 상황에서 표식 어노테이션과 표식 인터페이스를 선택해서 사용해야 하나?
  • 클래스나 인터페이스 이외의 프로그램 요소에 적용되어야 하는 표식은 어노테이션으로 만들어야 한다.
  • 표식을 앞으로도 영원히 특정 인터페이스 객체에만 적용 : 표식은 인터페이스의 하위 인터페이스로 정의하는게 좋음
  • 표식을 앞으로 다른 인터페이스 객체에도 적용 : 표식 어노테이션을 이용하는게 좋음

결론 : 새로운 메서드가 없는 자료형을 정의하고자 한다면 표식 인터페이스를 이용한다. but, 클래스나 인터페이스 이외의 프로그램 요소에 표식을 달아야 하고, 앞으로 표식에 더 많은 정보를 추가할 가능성이 있다면, 표식 어노테이션을 사용해야한다.

   

참조

표식 어노테이션 설명 블로그

JAVA api marker annotation Element type site