Effective Java 2장 객체의 생성과 삭제
규칙 4. 객체생성을 막을 때는 private 생성자를 사용하라
정적메서드나 필드만 모은 클래스를 만드는 상황이 생길 수 있음.
- 유틸성 클래스들(static 필드나 메서드만을 가지고 있는) ex) java.util.Math
보통 아무런 인자가 없는 default 생성자가 기본적으로 만들어지기 때문에, 클래스를 abstract 으로 선언하는 것은 소용 없음.
따라서, 객체생성을 막고 싶다면 private 생성자를 클래스에 생성해 객체를 생성하는 것을 방지해야 함.
private AClass(){
throw new AssertionError();
}
-
위와같이 private 생성자 안에 AssertionError를 예외처리 해줄 수 있음.
-
해당 방법을 사용하면, 해당 클래스의 하위 클래스 또한 만들 수 없음.
- 모든 생성자는 상위 클래스의 생성자를 명시적/묵시적으로 호출가능해야 하지만, 해당 클래스에는 호출 가능한 생성자가 없으므로
'공부 > JAVA' 카테고리의 다른 글
이펙티브 자바 2장 규칙 6. 유효기간이 지난 객체참조는 폐기하라 (0) | 2021.02.17 |
---|---|
이펙티브 자바 2장 규칙 5. 불필요한 객체는 만들지 말라 (0) | 2021.02.17 |
이펙티브 자바 2장 규칙3. private 생성자나 enum 자료형은 싱글턴 패턴 따르도록 설계하라 (0) | 2021.02.02 |
이펙티브 자바 2장 규칙2.생성자 인자가 많을 경우, Builder 패턴을 적용하라 (0) | 2021.02.02 |
이펙티브 자바 2장 규칙1. 생성자 대신 정적 팩터리 메서드를 사용하라 (0) | 2021.02.02 |
댓글