도당탕탕
Item4 : 인스턴스화를 막으려거든 private 생성자를 사용하라 본문
Utility Class의 객체 생성을 막기 위해서는 private constructor를 선언해서 default constructor가 생기지 않도록 해야한다.
public class UtiliyClass {
private UtilityClass () {
throw new AssertionError();
}
}
물론 abstract class를 만듬으로써 객체 생성을 막을 수도 있지만 다음과 같은 문제가 있다.
- 다른 클래스가 이를 상속해서 객체를 생성할 수 있음
- 사용자도 상속을 해야하는 class로 오해
따라서 인스턴스화를 막으려거든 private 생성자를 선언해 사용하는 것이 좋다.
그러나 모든 코드는 트레이드 오프가 있듯 private 생성자에도 부작용도 있다. 바로 다른 클래스가 상속할 수 없다는 것이다. (자식 클래스가 부모 클래스의 생성자에 접근 할 수 없기 때문에)
'JAVA' 카테고리의 다른 글
Java 런타임에 대하여 (0) | 2022.12.07 |
---|---|
Item6 : 불필요한 객체생성을 피하라 (2) | 2022.12.07 |
Item5 : 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2021.05.06 |
Item3 : 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2021.05.03 |
Item2: 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2020.07.15 |
Comments