티스토리 뷰
프로그래밍/Effective Java
[Effective Java] 04. 객체 생성을 막을 때는 private 생성자를 사용하라.
Reference M1 2019. 3. 10. 22:53코딩을 할 때 객체 생성을 막고 싶을 때가 있다.
유틸리티 클래스(Utiliy class)들은 객체를 만들 목적의 클래스가 아니다. 객체를 만들면 오히려 이상하다. 하지만 생성자를 생략하면 컴파일러는 자동으로 디폴트 생성자(default constructor)를 만들어 버린다. 귀가 닳도록 듣고 입이 아프도록 많이 했던 말이다.. 이렇기 때문에 생성자를 만들지 않으려고 생성자를 선언하지 않았어도 사용자는 해당 클래스의 객체를 만들 수 있게 된다.
이런 경우 디폴트 생성자를 private로 정의해 놓고 객체를 생성하지 못하도록 막아야한다.
/* 객체를 만들 수 없는 유틸리티 클래스 */
public class UtilityClass {
/* 기본 생성자가 자동으로 생성도지 못하도록 하여 객체 생성 방지 */
private UtilityClass() {
throw new AssertionError();
}
... /* 나머지 생략 */
}
'프로그래밍 > Effective Java' 카테고리의 다른 글
[Effective Java] 06. 유효기간이 지난 객체 참조는 폐기하라. (0) | 2019.04.21 |
---|---|
[Effective Java] 05. 불필요한 객체는 만들지 마라. (0) | 2019.03.26 |
[Effective Java] 03. private 생성자나 enum 자료형은 싱글턴 패턴을 따르도록 설계하라. (0) | 2019.03.09 |
[Effective Java] 02. 생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라. (0) | 2019.03.01 |
[Effective Java] 01. 생성자 대신 정적 팩터리 메서드를 사용할 수 없는지 생각해 보라. (0) | 2019.02.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
- Collection
- effective java
- 자바스크립트
- 회고
- 리눅스 명령어
- 정렬 알고리즘
- Maven
- Eclipse
- Linux 명령어
- Java
- 오라클
- sort algorithm
- 경력관리
- 리액트
- 오라클 내장 함수
- 프로그래머스
- 개발환경
- 제주도 여행
- 프로그래머
- 소프트웨어공학
- React
- spring
- Tomcat
- 자바
- 제주도 3박4일 일정
- 성능분석
- 이직
- javascript
- SQL
- 리액트 16
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함