(Effective Java) 자료형을 정의할 때는 인터페이스를 사용하라
*표식 인터페이스는 아무 메소드도 선언하지 않는 인터페이스다.
클래스를 만들때 표식 인터페이스를 구현하는 것은 해당 클래스가 어떤 속성을 가지고 있다는것을 표시하는 것이다.
그 예로 Serializable이다.
그러면 여기서 궁금증이 생긴다.
표식 어노테이션을 사용하면 되는 것이 아닌가?
가장 중요한 첫번째 장점은, 표식 인터페이스는 결국 표식 붙은 클래스가 만드는 객체들이 구현하는 자료형이라는 점이다. 표식 어노테이션은 자료형이 아니다.
즉, 표식 인터페이스는 자료형이므로, 표식 어노테이션을 쓴다면 프로그램 실행 중에나 발견하게 될 오류를 컴파일 시점에 발견할 수 있다.
두번째 장점은, 적용 범위를 좀 더 세밀하게 지정할 수 있다는 것이다. 어노테이션 자료형을 선언할 때 target을 ElementType.TYPE으로 지정하면 해당 어노테이션은 어떤 클래스나 인터페이스에도 적용 가능하다.
그런데 특정한 인터페이스를 구현한 클래스에만 적용하고자한다면 표식인터페이스를 사용해야 한다.
클래스를 만들때 표식 인터페이스를 구현하는 것은 해당 클래스가 어떤 속성을 가지고 있다는것을 표시하는 것이다.
그 예로 Serializable이다.
그러면 여기서 궁금증이 생긴다.
표식 어노테이션을 사용하면 되는 것이 아닌가?
가장 중요한 첫번째 장점은, 표식 인터페이스는 결국 표식 붙은 클래스가 만드는 객체들이 구현하는 자료형이라는 점이다. 표식 어노테이션은 자료형이 아니다.
즉, 표식 인터페이스는 자료형이므로, 표식 어노테이션을 쓴다면 프로그램 실행 중에나 발견하게 될 오류를 컴파일 시점에 발견할 수 있다.
두번째 장점은, 적용 범위를 좀 더 세밀하게 지정할 수 있다는 것이다. 어노테이션 자료형을 선언할 때 target을 ElementType.TYPE으로 지정하면 해당 어노테이션은 어떤 클래스나 인터페이스에도 적용 가능하다.
그런데 특정한 인터페이스를 구현한 클래스에만 적용하고자한다면 표식인터페이스를 사용해야 한다.
댓글
댓글 쓰기