정적 메서드와 정적 필드만을 담은 클래스의 쓰임새
1. 기본 타입 값이나 배열 관련 메서드들을 모아놓을때 사용(java.lang.Math / java.util.Arrays)
2. 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드를 모아놓을때 사용(java.util.Collections)
3. final 클래스와 관련한 메서드들을 모아놓을때 사용.
인스턴스화를 막는 방법
(문제)
정적 멤버만 가지는 클래스는 인스턴스로 만들려고 설계한 것이 아님.
하지만, 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어줌으로, 인스턴스화 할 수 있는 클래스가 됨.
(해결방법)
private 생성자를 추가해서 클래스의 인스턴스화를 막을 수 있음.
하지만 직관적이지는 않으므로 적적한 주석을 달아주는 것이 좋음.
+) 이 방식은 상속을 불가능하게 하는 효과도 있음.
모든 생성자는 명시적이든 묵시적이든 상위 클래스의 생성자를 호출함. 이를 private으로 선언했으니 하위 클래스가 상위 클래스의 생성자에 접근할 길이 없음.
'책 > 이펙티브 자바 3판' 카테고리의 다른 글
[아이템 7] 다 쓴 객체 참조를 해제하라. (0) | 2023.04.19 |
---|---|
[아이템 6] 불필요한 객체 생성을 피하라. (0) | 2023.04.18 |
[아이템 3] private 생성자나 열거 타입으로 싱글턴임을 보증하라. (0) | 2023.04.18 |
[아이템 2] 생성자에 매개변수가 많다면 빌더를 고려하라. (0) | 2023.04.18 |
[아이템 1] 생성자 대신에 정적 팩토리 메서드 패턴을 고려하라. (0) | 2023.04.18 |