Home [Effective Java] Item04. 인스턴스화를 막으려거든 private 생성자를 사용하라!
Post
Cancel

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

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

문제

  • 정적 멤버만 담은 유틸리티 클래스 -> 인스턴스화 하여 사용하려 만든 것이 아니다. 그럼에도 생성자 명시를 하지 않아 public의 기본 생성자가 생성되어 원치 않는 인스턴스화를 유발하기도 한다.

해결

  • 추상 클래스의 사용? -> 인스턴스화 막을 수 없다. 왜? 하위 클래스 생성해 인스턴스화할 수 있기에, 또한 추상 클래스이기에 사용자는 이를 상속해 사용해야할 것이란 오해를 할 수도 있다.
  • 생성자를 명시하지 않아 public 형태의 기본생성자가 만들어지는 것이 문제이니, 간단하게 private 형태의 생성자를 만들어주면 인스턴스화를 하는 것이 불가능해진다.
1
2
3
4
5
public class Sample {
	private Sample() { // private Constructor -> 인스턴스화 방지
		throw new AssertionError(); // 클래스 내부에서 생성자 호출할 수도 있어 혹시 몰라 추가해준다.
	}
}
This post is licensed under younghwani by the author.

[Effective Java] Item03. private 생성자나 열거 타입으로 싱글턴임을 보증하라!

[Effective Java] Item05. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라!

Comments powered by Disqus.