Skip to content

Latest commit

 

History

History
21 lines (14 loc) · 1.16 KB

File metadata and controls

21 lines (14 loc) · 1.16 KB

규칙37. 자료형을 정의할때 표식 인터페이스를 사용하라

표식 인터페이스(marker interface)는 아무 메서드도 선언하지 않는 인터페이스다.

public abstract class ButtonUI extends ComponentUI {
}

클래스를 만들 때 표식 인터페이스를 구현하는 것은, 해당 클래스가 어떤 속성을 만족한다는 사실을 표시하는 것과 같다.

장점

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

단점

  • 표식 어노테이션은 처음에는 단순하다가 나중에는 기능이 더 풍부한 어노테이션 자료형으로 진화가 가능하나, 표식 인터페이스는 불가능하다

결론

만일 ElementType.TYPE에 적용될 표식 어노테이션 자료형을 작성하고 있다면, 반드시 어노테이션 자료형으로 구현해야 하는지, 표식 인터페이스로 만드는 것이 바람직하지 않은지 고민해보기 바란다.