- 적합한 인터페이스가 있다면 매개변수, 반환값, 변수, 필드 전부 인터페이스 타입으로 선언하라.
- 적합한 인터페이스가 없다면 클래스로 참조해야 한다.
<적합한 인터페이스가 없는 경우>
- String, BigInteger 같은 값 클래스. 값 클래스를 여러 가지로 구현될 수 있다고 생각하고 설계하는 일은 거의 없다.
- 클래스 기반으로 작성된 프레임워크가 제공하는 객체들. (ex: OutputStream 등 java.io 패키지의 여러 클래스)
- 인터페이스에는 없는 특별한 메서드를 제공하는 클래스들. (ex: PirorityQueue)
- 실전에서는 주어진 객체를 표현할 적절한 인터페이스가 있는지 찾아서 그 인터페이스로 참조하면 된다.
- 인터페이스가 없다면 필요한 기능을 만족하는 가장 덜 구체적인(상위의)클래스를 타입으로 사용하자.
'이펙티브 자바 > 9장 일반적인 프로그래밍 원칙' 카테고리의 다른 글
아이템 66 네이티브 메서드는 신중히 사용하라 (0) | 2023.12.14 |
---|---|
아이템 65 리플렉션보다는 인터페이스를 사용하라 (0) | 2023.12.14 |
아이템 63 문자열 연결은 느리니 주의하라 (0) | 2023.12.13 |
아이템 62 다른 타입이 적절하다면 문자열 사용을 피하라 (0) | 2023.12.13 |
아이템 61 박싱된 기본 타입보다는 기본 타입을 사용하라 (0) | 2023.12.13 |