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

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

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

static method와 static field만을 담은 클래스를 만들 때가 있다.

이러한 유틸리티 클래스들은 인스턴스로 만들어 사용하려고 설계 한 것이 아니다.

하지만, 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 생성한다.

추상 클래스를 만드는 것으로는 인스턴스화를 막을 수 없다.

하위 클래스를 만들어 인스턴스화 할 수 있기 떄문이다. 또한, 추상 클래스는 사용자가 상속해서 사용하라는 의미로 오해할 수 있다.

private 생성자를 추가하면 간단하게 인스턴스화를 막을 수 있다.

1
2
3
4
5
public class Util {
	private Util() {
		throw new AssertionError();
	}
}

private 생성자이므로 클래스 밖에서는 접근할 수 없고, 상속받을 수도 없다.

생성자 내부에서 AssertionError 예외를 발생시키도록 해놓으면 클래스 내부에서의 호출도 막을 수 있다.

This post is licensed under CC BY 4.0 by the author.

private 생성자나 열거 타입으로 싱글턴임을 보장하라

자원을 직접 명시하지 말고 의존 객체 주입을 사용하라