[아이템 4] 인스턴스화를 막으려거든 private 생성자를 사용하라

ajufresh·2020년 3월 2일
0

Effective Java 3/E

목록 보기
4/9
post-thumbnail

블로그에 게시하는 위 글은 전체적인 내용 정리가 아닌
책을 읽으면서 새로 알게된 내용이나 제가 중요하다고 생각하는 내용을 정리한 글입니다.

정적 메서드와 정적 필드만을 담은 클래스

기본 타입이나 배열 관련 메소드들을 모아놓을 수 있다. (ex. util class)
Collections도 이에 해당한다.

또는 final 클래스와 관련한 메소드들을 모아놓을 때 사용

그런데 이걸 인스턴스화할수도 있다.
아래 소스코드처럼 말이다.

// I think
StringUtils.isEmpty(somthing);

// Someone use
StringUtils util = new StringUtil();
util.isEmpty(somthing);

이 상황을 위해 추상클래스를 만드는 것은 옳지 않다.
하위 클래스를 만들어서 인스턴스화하면 되기 때문이다.

그렇기 때문에 인스턴스화를 막기 위해서는 private 생성자를 만들어야한다.

public class StringUtils {

	private StringUtils(){
    	throw new AssertionError();
    }

}


Collections에서는 이렇게 사용하고 있다.

profile
공블로그

0개의 댓글