[Effective Java] item22 - 인터페이스는 타입을 정의하는 용도로만 사용하라

신민철·2023년 5월 4일
1

Effective Java

목록 보기
22/23
post-thumbnail

인터페이스는 클래스에 자신이 어떤 기능을 할 수 있는지를 알려주는 역할이다. 인터페이스는 오직! 이 용도로만 사용되어야 한다.

이 용도 외에 잘못 설계된 예시가 있는데, 바로 상수 인터페이스이다. 상수 인터페이스는 static final 필드로만 이루어진 인터페이스다. 이러한 설계는 잘못된 예시이다. 상수는 내부적 구현으로 만들어야 하는데 외부 API로 공개한 꼴이 된다.

또한 새 릴리즈로 이 상수들을 쓰지 않더라도 바이너리 호환성을 위해 그대로 구현하고 있어야 하는 단점도 있다.

그러면 어떤 방식으로 상수를 만들어야 할까?

  1. 클래스 혹은 인터페이스 내부에 선언 : 숫자 기본 타입의 박싱 클래스들은 MAX_VALUE, MIN_VALUE 같이 상수가 구현되어 있다.
  2. 열거 타입 : 열거 타입에 적합한 것들은 열거 타입으로 만들자.
  3. 유틸리티 클래스 : Student 클래스에 상수가 FIRST, SECOND, THIRD라는 상수가 있다고 해보면 Student.FIRST, Student.SECOND 처럼 쓸 수 있고 정적 import를 하게 되면 FIRST, SECOND만으로도 상수를 쓸 수가 있다.

0개의 댓글