프로그래밍/JAVA
[JAVA] Effective Java - 4. 인스턴스화를 막으려면 private 생성자를 사용
하나만알자
2022. 9. 6. 23:43
반응형
<심플한 내용이라 간단하게 정리>
정적 멤버로만 이루어진 클래스
1. 유틸리티 성 클래스
ex) java.lang.Math, java.util.Arrays
2. 특정 인터페이스를 구현하는 객체를 생성해주는 클래스
ex) java.util.Collections
3. final 클래스와 관련된 메서드들을 모아놓을 때
여기선 final 클래스란 상속이 불가한 클래스
final class Service {
}
이런 유틸리티 클래스는 대개 인스턴스화 하지않는다.
그렇다고 생성자를 명시하지않으면 컴파일러가 자동으로 public 기본 생성자를 만들어준다. -> 원하는 방향이 아님
그때, private 생성자를 추가하면 클래스의 인스턴스화를 막을 수 있다.
class Service {
private Service() {
throw new AssertionError();
}
}
또한 생성자 호출 시 에러를 발생시켜 어떤 환경에서도 인스턴스화되는 것을 막아준다.
대신 상속이 불가해진다.
반응형