[Effective Java] - 4장 아이템 22. 인터페이스는 타입을 정의하는 용도로만 사용하라

yeom yaloo·2023년 11월 28일
0

Effective Java

목록 보기
10/20
post-thumbnail

4장 클래스와 인터페이스

[아이템 22. 인터페이스는 타입을 정의하는 용도로만 사용하라]

  • 인터페이스는 상수 공개용으로 사용하지 말아야 한다. 타입을 정의하는 용도로만 사용해야 한다.

[핵심 정리]
인터페이스는 타입을 정의하는 용도로만 사용해야 한다. 상수 공개용 수단으로 사용하지말자

[타입 역할을 하는 인터페이스]

1. 인터페이스는 자신을 구현한 클래스의 인스턴스를 참조할 수 있는 타입 역할을 한다.

  • 클래스가 어떤 인터페이스를 구현하느냐에 따라서 어떤 인스턴스로 무엇을 할수 있는지를 클라이언트에게 알려주는 역할을 한다.

//인터페이스로 인스턴스를 참조할 수 있는 타입 역할을 한다. 
List<String> list = new ArrayList<>();

2. 상수 인터페이스

interface InterfaceClass{

	static final double AVOGADROS_NUMBER = 6.022_140_857e23;
    
}
  • 상수 인터페이스란 메서드 없이 상수를 뜻하는 static final 필드로만 가득 찬 인터페이스를 말한다.
  • 이 경우엔 정규화된 이름을 쓰는 것을 피하려는 클래스에서 인터페이스를 구현해 상수 필드만 가득 넣어 정규화된 이름을 쓰는 일을 피하고 있다.
  • 이 경우엔 다음 릴리스에 사용되지 않음에도 불구하고 바이너리 호환성을 위해서 여전히 상수 인터페이스를 구현하고 있어야 하는 문제가 발생한다.

2-1. 상수를 공개할 목적이라면?

  • 특정 클래스나 인터페이스와 강하게 연관된 상수의 경우라면 그 클래스나 인터페이스 자체에 추가해서 사용할 수 있게 한다.
    Integer, Double에 선언된 MIN_VALUE, MAX_VALUE 상수가 대표적인 예시이다.

2-2. .유틸리티 클래스의 상수를 빈번히 사용한다면?

  • 정적 임포트(static import)하여 클래스 이름을 생략해 사용한다.
profile
즐겁고 괴로운 개발😎

0개의 댓글