“적합한 인터페이스”가 있다면, 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라.
- 객체의 실제 클래스를 사용해야 할 상황 : ‘오직’ 생성자로 생성할 때 뿐
Set<Son> sonSet = new LinkedHashSet<>(); // 좋은 예
LinkedHashSet<Son> sonSet = new LinkedHashSet<>(); // 안좋은 예
- 인터페이스를 타입으로 사용하는 습관을 길러두면 프로그램이 훨씬 유연해질 것이다.
- LinkedHashSet을 HashSet으로 바꾸면 문제가 발생할 수 있다.
- 적합한 인터페이스가 없다면 당연히 클래스로 참조해야 한다.
'공부 > 이펙티브자바' 카테고리의 다른 글
14. Comparable을 구현할지 고려하라 (0) | 2022.03.18 |
---|---|
12. toString을 항상 재정의하라 (0) | 2022.03.18 |
5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하기 (0) | 2022.03.18 |
3. private 생성자나 열거타입으로 싱글턴임을 보증 (0) | 2022.03.03 |
1. 생성자 대신 정적 팩터리 메서드를 고려하자 (0) | 2022.03.03 |
댓글