[Effective-Java] 인스턴스화를 막으려거든 private 생성자를 사용하라


[Effective-Java] 인스턴스화를 막으려거든 private 생성자를 사용하라

인스턴스화가 필요 없는 클래스 유틸 클래스, 상수를 제공하는 클래스 등 정적 메서드, 정적 필드를 가지는 클래스가 필요한 경우가 있다. 자바의 기본 클래스인 java.lang.Math, java.util.Arrays, java.util.Collections 등이 이에 속한다. 이런 정적 멤버만 존재하는 유틸리티 클래스는 인스턴스화를 위해 설계한 것이 아니다. 하지만 생성자를 정의하지 않을 경우, 컴파일러는 public 한 매개 변수가 없는 기본 생성자를 만들어낸다. 해당 유틸리티 클래스를 사용하는 사용자의 경우 이것이 컴파일러에 의해 만들어진 생성자인지 구분할 수 없기 때문에 의도치 않은 인스턴스를 만들어낼 수 있다. 유틸리티 클래스를 추상 클래스로 만들어 인스턴스화를 불가능하게 만들면 될 것 같지만, 해당 클래스를 상속해서 인스턴스화할 수 있는 방법이 있다. 또한 추상 클래스의 경우, 상속을 해서 사용해야 하는 클래스라는 오해를 할 수 있다. private 생성자 사용 public...


#Java #생성자 #유틸클래스 #이펙티브자바 #인스턴스화방지 #자바 #프로그래밍

원문링크 : [Effective-Java] 인스턴스화를 막으려거든 private 생성자를 사용하라