"인스턴스화를 막으려거든 private 생성자를 사용해라"는 조언은 유틸리타 클래스나 도우미 클래스와 같이 상태를 가지지 않고 단순 메서드만을 제공하는 클래스에서 주로 사용된다.
예시 :
public class UtilityClass {
// private 생성자를 추가하여 인스턴스화를 방지함
private UtilityClass() {
throw new AssertionError("UtilityClass should not be instantiated");
}
// 유틸리티 메서드 예시
public static void utilityMethod() {
// 메서드 구현
}
}
예시에 나온 UtilityClass 같이 오직 메서드만을 제공할 경우 private 생성자를 추가해, 외부에서 인스턴스 생성을 막을 수 있다. 생성자 내부에서 AssertionError를 던지는 것은 내부에서 인스턴스를 생성하려는 시도를 방지하기 위함이다.
이렇게 하면 클래스 설계 의도가 명확해지고, 불필요한 인스턴스 생성으로 인한 리소스 낭비를 방지할 수 있다.
모든 생성자를 private 으로 선언하지않았다면 Java에서 자동으로 기본생성자 public 을 추가해 어디서나 인스턴스를 생성할 수 있게된다.
결론 : private 생성자를 추가하면 클래스의 인스턴스화를 막을 수 있다.
'이펙티브 자바' 카테고리의 다른 글
[이펙티브 자바] 아이템 6. 불필요한 객체 생성을 피하라 (0) | 2024.03.11 |
---|---|
[이펙티브 자바] 아이템 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2024.03.11 |
[이펙티브 자바] 아이템 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2024.03.11 |
[이펙티브 자바] 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2024.03.11 |
[이펙티브 자바] 아이템 1. 생성자 대신 정적 팩토리 메서드를 고려하라 (0) | 2024.03.11 |