이펙티브 자바에 나온 내용 중 인상 깊은 내용을 추려보자
객체의 생성과 삭제
- 생성자 대신 정적 팩토리 메서드 고려
- 생성자 인자가 많은 경우 Builder 패턴 고려
- 유효기간이 지난 객체 참조는 폐기하라 - 참조에 따른 gc 이슈
- 싱글톤은 잘 만들어야함
- clone, 직렬화 시 싱글톤이 깨질 수 있음
모든 객체의 공통 메서드
- equals와 hashCode 규칙과 주의사항
- toString을 정의하라
- clone 메서드 재정의 할 때 주의사항
클래스와 인터페이스
- 접근 권한을 최소화할것
- 변경 가능성을 최소화 하라 - 객체 불변성
- 어설픈 get 메서드에 의해 참조가 세어나가면 불변성은 깨짐
- 어설픈 직렬화를 사용하면 불변성을 깨짐
- 멤버 클래스는 가능하면 static 으로 할것 - 최소 권한 규칙
제네릭
- 무점검 경고를 제외하라
- 클래스 리터럴에는 반드시 무인자 자료형을 사용해야한다 (형인자 자료형은 클래스 리터럴 사용 불가)
- 다음과 같은 문법 허용 안됨
- List<Object> listObj = new ArrayList<String>();
- 제네릭 타입은 그 자체로 하나의 타입으로 간주
- 타입 소거 (Type erasure)
- 한정적 와일드카드