마커 인터페이스
•
아무 메서드도 담고 있지 않고, 단지 자신을 구현하는 클래스가 특정 속성을 가진다는 것을 나타내는 인터페이스를 마커 인터페이스라 부른다.
•
마커 인터페이스의 대표적인 예로 Serializable이 있는데, Serializable은 자신을 구현하는 클래스가 ObjectOutputStream을 통해 직렬화 가능하다는 것을 알려주는 목적으로 사용된다.
•
이와 동일한 기능을 하는 마커 애노테이션이 등장했지만, 두 가지 측면에서 여전히 마커 인터페이스가 마커 애노테이션보다 좋다.
◦
마커 인터페이스는 구현 클래스의 인스턴스들을 구분하는 타입으로 쓸 수 있지만 마커 애노테이션은 그렇지 않다.
◦
마커 인터페이스가 적용 대상을 더 정밀하게 지정할 수 있다.
•
모듈이나 패키지, 필드, 지역변수와 같이 인터페이스 외의 요소에 마킹해야할 때에는 어쩔 수 없이 마킹 애노테이션을 사용해야하겠지만, 클래스나 인터페이스에 마킹을 적용한다면 마킹된 객체를 매개변수로 받는 메서드를 작성할 일이 있을까를 고민했을 때 그럴 것 같으면 마커 인터페이스를 적용하자.