본문 바로가기
프로그래밍 언어/Java

이펙티브 자바 - 아이템 4. 인스턴스화를 막으려거든 private 생성자를 사용하라

by 데브조이 2024. 8. 17.
반응형
이펙티브 자바(Effective java) 를 읽고 정리한 글입니다. 

 

정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어서 쓰려고 설계하는 것이 아니다.

그렇기 때문에 인스턴스화가 불가하도록 막아야 한다.

 


인스턴스화 방지

 

컴파일러는 자동으로 기본 생성자를 만든다.

 

우리는 유틸리티 클래스가 의도치 않게 인스턴스화가 가능하도록 두지 말아야 한다.

그러니 prvate 생성자를 추가하여 클래스의 인스턴스화를 막자.

 

public class UtilityClass {
    private UtilityClass() {
        throw new AssertionError ();
    }
    // ...   
}

 

 

위와 같이 생성자 내부에서 Error 를 던지도록 하면, 클래스 내부에서 실수로 생성자를 호출하는 일도 막아준다.

 


정리

정적 멤버만 가지는 유틸리티 클래스를 구현할 때는 private 생성자를 이용하여 인스턴스화를 막자.

 

반응형