유틸리티 클래스 들은 인스턴스를 생성하지 못하게 설계되어 있다. 인스턴스 생성이 의미가 없기 때문인데, 그런 클래스라고 해도 명시적으로 지정한 생성자가 없을 때는 컴파일러가 default 생성자를 만들어준다.
이 경우 클래스 사용자 입장에서는 이 생성자가 다른 것과 차이가 없으며 javadoc 프로그램으로 생성하는 api 문서에도 나타나므로 인스턴스 생성이 가능한 클래스로 오인될 수 있다.
그러므로 생성자 호출을 통한 인스턴스 생성을 방지하고 api문서에도 나타나지 않도록 할 수 있는 방법이 필요하다.
이걸 간단하게 없애주는 거싱 있다. 디폴트 생성자는 명시적으로 지정한 생성자가 전혀 없을 때만 자동으로 만들어진다. 따라서 private 생성자를 정의하면 인스턴스 생성이 불가능한 클래스를 만들 수 있다.
public class IdiomCode { //디폴트 생성자가 자동으로 생성되는 것을 방지 private IdiomCode(){ throw new AssertionError(); } } |
이렇게 처리하면 된다.
'개발 이야기 > Effective Java' 카테고리의 다른 글
Item 6. 쓸모 없는 객체 참조를 제거하자. (0) | 2010.03.08 |
---|---|
Item 5. 불필요한 객체의 생성을 피하자. (0) | 2010.03.08 |
Item 3. private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자. (0) | 2010.03.04 |
Item 2. 생성자의 매개변수가 많을 때는 빌더를 고려하자. (0) | 2010.03.04 |
Item 1. 생성자 대신 static factory method 사용을 고려하자. (0) | 2010.03.04 |