마커 애너테이션

정의하려는 것이 타입이라면 마커 인터페이스를 사용하라 - [6장. 열거 타입과 애너테이션(아이템41)]
// 마커 인터페이스 public interface MarkerInterfaceEx { } 마커 인터페이스(Marker Interface)란 아무 메서드도 담고 있지 않고, 단지 자신을 구현하는 클래스가 특정 속성을 가짐을 표시해 주는 인터페이스를 말한다. 예시로 Serializable 인터페이스가 있다. Serializable을 구현한 클래스의 인스턴스는 ObjectOutputStream을 통해 쓸(write) 수 있다고, 즉 직렬화(Serialization)할 수 있다고 알려준다. // 마커 애너테이션 public @interface MarkerAnnotationEx { } 마커 애너테이션이 등장하면서 마커 인터페이스를 사용할 필요가 없다고 생각할 수 있다. 하지만 사실이 아니다. 이번 글을 통해 마..

명명 패턴보다 애너테이션을 사용하라 - [6장. 열거 타입과 애너테이션(아이템39)]
📙 명명 패턴의 문제점 전통적으로 도구나 프레임워크가 특별히 다뤄야 할 프로그램 요소에는 딱 구분되는 명명 패턴을 적용해 왔다. 예를 들어, 테스트 프레임워크인 JUnit은 버전 3까지 테스트 메서드 이름을 test로 시작하게끔 했다. 효과적인 방법이지만 아래와 같은 3가지 큰 단점이 있다. 오타가 나면 안 된다. 실수로 이름을 tsetSafetyOverride로 지으면 이 메서드는 무시된다. 올바른 프로그램 요소에서만 사용되리라 보증할 방법이 없다. 클래스 이름을 TestSafetyMechanisms로 지어 이 클래스에 정의된 테스트 메서드들을 수행하길 바라지만 JUnit은 클래스 이름에는 관심이 없다. 프로그램 요소를 매개변수로 전달할 마땅한 방법이 없다. 특정 예외를 던져야만 성공하는 테스트가 있다..