728x90
> _아직 Item4까지 밖에 보지 않았지만 정말 개발을 하면서 신경쓰지 않았던 부분에 대해서 다시한번 반성하고 배워가게 되는 책인것 같습니다.
Item4 같은 경우는 간단하게 보고 넘어가도 될듯 하여 짧게 포스팅을 하려고 합니다 .
```java
public class Utility {
// 기본생성자를 막기 위해 private 사용
private Utility () {
// 기본생성자를 통한 객체 생성 방지를 위해 throw 발생
throw new Exception();
}
}
```
자동으로 생성된 생성자가 아닌 명시적으로 만든 생성자가 private이기 때문에 클래스의 외부에서는 접근 불가능합니다.
따라서 어떤 환경에서도 클래스가 인스턴스화 되는것을 막을 수 있다.
throw new Exception처럼 익셉션을 발생시켜 직관적으로 명시해 준다.( 적절한 주석 OK)
주의해야 할점은 상속을 해야하는 상황에서는 사용하면 안됩니다.
모든생성자는 명시적이던지 묵시적으로 상위 클래스의 생성자를 호출하게 되는데, 상속받은 클래스가 private으로 선언했으니 하위클래스가 상위 클래스의 생성자에 접근하는 길이 막혀버립니다.
Item4는 간단하게 마무리 하겠습니다
728x90
반응형
'Java' 카테고리의 다른 글
[EffectiveJava] Item6 불필요한 객체 생성을 피하라 (0) | 2020.12.10 |
---|---|
[Effective Java] Item5 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2020.12.10 |
[Effective Java] Item3 private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2020.12.10 |
[Effective Java] Item2 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2020.12.10 |
[Effective Java] Item1 생성자 대신 정적 팩터리 메서드를 고려하라 (0) | 2020.12.10 |
댓글