이펙티브 자바 아이템4

한주영·2023년 9월 13일
0

이펙티브자바

목록 보기
4/33

인스턴스화를 막으려거든 private생성자를 사용하라

정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고
설계한것이 아님.
생성자를 명시하지않으면 public생성자가 만들어지고,
사용자는 이 생성자가 자동생성된것인지 구분하기가 어렵다

추상클래스로 만드는것으로는 인스턴스화를 막을수없기에.
private생성자를 추가하면 클래스의 인스턴스화를 막을수있다

public class UtilityClass{
     
     //private 생성자 
     private UtilityClass{
           throw new AssertionError();
     }
 
}

명시적생성자가 private이므로 클래스바깥에서는 접근 불가
AssertionError 에러를 던지는것이 필수는 아니지만 클래스 안에서
실수로라도 생성자를 호출하지않도록 방지.

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글