[Java][Effective Java] item 4, 인스턴스화를 막으려거든 private 생성자를 사용하라
2022. 5. 17. 15:40ㆍJAVA/Effective Java
인스턴스를 만들수 없는 클래스 사례
- java.lang.Math
- java.util.Arrays
- java.util.Collections
인스턴스화를 막기 위한 방법 : private 생성자 추가
private 생성자를 추가하면 클래스의 인스턴스화를 막을 수 있습니다.
// 객체를 만들 수 없는 유틸리티 클래스
public class UtilityClass {
// 기본 생성자가 만들어지는 것을 막는다(인스턴스 방지용)
private UtilityClass()
{
throw new AssertionError();
}
// 나머지는 생략
}
인스턴스화를 막기 위한 부적절한 방법 : 추상 클래스로 정의
인스턴스화를 막기 위해서 추상 클래스로 정의하면 클래스 자체는 막을 수는 있지만 하위 클래스를 만들어 인스턴스화하면 인스턴스화를 막을 수 없습니다. 오히려 사용자는 해당 클래스를 상속해서 쓰라는 듯으로 오해할 수 있기 때문에 더 큰 문제입니다.
References
[도서] effective java
source code : https://github.com/yonghwankim-dev/effective_java/tree/master/src/role4
'JAVA > Effective Java' 카테고리의 다른 글
[Java][Effective Java] item 6. 불필요한 객체 생성을 피하라 (0) | 2022.05.18 |
---|---|
[Java][Effective Java] item 5, 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2022.05.17 |
[Java][Effective Java] item 3, private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2022.05.15 |
[Java][Effective Java] item 2, 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2022.05.13 |
[Java][Effective Java] item 1, 생성자 대신 정적 팩토리 메서드를 고려하라 (0) | 2022.05.12 |