본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 있음 java.lang.Math, java.util.Arrays: 기본 타입 값이나 배열 관련 메서드들을 모아놓을 수 있음 java.util.Collections: 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(혹은 팩터리) final클래스와 관련된 메서드들을 모아놓을 때 사용 final클래스는 상속이 불가능 -> 기능의 확장이 어려움 관련된 메서드들을 모아 놓음으로써 기능의 확장이 용이해짐 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어줌 즉, 매개변수를 받지 않는..
본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 싱글턴 만드는 방법 주된 2가지 방법1 - final 필드) public static final INSTANCE 방법2 - 정적 팩터리 메서드) private static final INSTANCE + public static getInstance 방법1과 방법2의 공통점 private 생성자 이용 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버 마련 생성자가 두 번 호출될 시에 방어가 필요함 이유가 궁금하면 '도둑클래스' 키워드로 검색 방법3 public 필드 방식과 유사하지만 직렬화하기 쉬움 아주 복잡한 직렬화 상황이나 리플렉..
본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 정적 팩터리 메서드와 생성자에는 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 공통적인 제약이 있다. 이에 따른 해결방안으로 여러가지 해결책을 소개하고자 한다. 해결책 1: 점층적 생성자 패턴 먼저 필수 매개변수만 받는 생성자를 지정하고, 필요에 따라 선택 매개변수를 추가하는 점층적 생성자 패턴이 있다. // IDE의 도움 없이는 읽기가 상당히 불편하다.. NutritionFacts cocaCola = new NutritionFacts(240, 8, 100, 0, 35, 27); 이런 생성자를 쓰다보면 필요하지 않은 매개변수를 포함하는 경우가 발생하..
본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 정적 팩터리 메서드가 생성자보다 좋은 장점 다섯가지 1. 이름을 가질 수 있다 이름을 잘 지으면 변환될 객체의 특성을 쉽게 묘사가능 하나의 시그니처로 생성자를 여러개 만들고 싶을 때 사용하면 좋다.. 2. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다 인스턴스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 개체 생성을 피할 수 있다 싱글턴, 인스턴스화 불가, 불변 값 클래스에서 동치인 인스턴스가 단 하나뿐임을 보장(a == b일 때만 a.equals(b)) 3. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 ..