마커 인터페이스 혹은 표식 인터페이스(marker interface)는 아무 메서드도 선언하지 않는 인터페이스이다.(자세한 내용 참조 블로그)
(Ex. Cloneable, serializable,Eventlistener,Remote,RandomAccess,EnterpriseBean 등)
표식 어노테이션 vs 표식 인터페이스
- 표식 인터페이스는 표식이 붙은 클래스가 만드는 객체들이 구현하는 자료형이라는점, 표식 어노테이션은 자료형이 아니다.
- 표식 인터페이스는 적용 범위를 좀더 세밀하게 지정할 수 있기 때문에 표식 어노테이션보다 낫다.
그럼 어떤 상황에서 표식 어노테이션과 표식 인터페이스를 선택해서 사용해야 하나?
- 클래스나 인터페이스 이외의 프로그램 요소에 적용되어야 하는 표식은 어노테이션으로 만들어야 한다.
- 표식을 앞으로도 영원히 특정 인터페이스 객체에만 적용 : 표식은 인터페이스의 하위 인터페이스로 정의하는게 좋음
- 표식을 앞으로 다른 인터페이스 객체에도 적용 : 표식 어노테이션을 이용하는게 좋음
결론 : 새로운 메서드가 없는 자료형을 정의하고자 한다면 표식 인터페이스를 이용한다. but, 클래스나 인터페이스 이외의 프로그램 요소에 표식을 달아야 하고, 앞으로 표식에 더 많은 정보를 추가할 가능성이 있다면, 표식 어노테이션을 사용해야한다.
참조
반응형
'개발이야기 > Effective Java' 카테고리의 다른 글
[Effective Java]가능하면 제네릭 자료형으로 만들 것 (0) | 2017.04.16 |
---|---|
[Effective Java]무점검 경고(unchecked warning)를 제거하라 (0) | 2017.04.16 |
[Effective Java]새 코드에는 무인자 제네릭 자료형을 사용하지 마라 (0) | 2017.04.15 |
[Effective Java]Override 어노테이션은 일관되게 사용하라 (250) | 2017.03.10 |
[Effective Java]작명 패턴 대신 어노테이션을 사용하라 (575) | 2017.03.10 |
[Effective Java]int 상수 대신 enum을 사용하라 (1100) | 2017.03.10 |