본문 바로가기
Java

[Effective java] Item4 인스턴스화를 막으려거든 private 생성자를 사용하라

by 신입같은 3년차 2020. 12. 10.
728x90

> _아직 Item4까지 밖에 보지 않았지만 정말 개발을 하면서 신경쓰지 않았던 부분에 대해서 다시한번 반성하고 배워가게 되는 책인것 같습니다.

Item4 같은 경우는 간단하게 보고 넘어가도 될듯 하여 짧게 포스팅을 하려고 합니다 .

```java
public class Utility {

    // 기본생성자를 막기 위해 private 사용
    private Utility () {
        // 기본생성자를 통한 객체 생성 방지를 위해 throw 발생
        throw new Exception();
    }
}

```

자동으로 생성된 생성자가 아닌 명시적으로 만든 생성자가 private이기 때문에 클래스의 외부에서는 접근 불가능합니다.

따라서 어떤 환경에서도 클래스가 인스턴스화 되는것을 막을 수 있다.

throw new Exception처럼 익셉션을 발생시켜 직관적으로 명시해 준다.( 적절한 주석 OK)

주의해야 할점은 상속을 해야하는 상황에서는 사용하면 안됩니다.

모든생성자는 명시적이던지 묵시적으로 상위 클래스의 생성자를 호출하게 되는데, 상속받은 클래스가 private으로 선언했으니 하위클래스가 상위 클래스의 생성자에 접근하는 길이 막혀버립니다. 

Item4는 간단하게 마무리 하겠습니다 

728x90
반응형

댓글