static method와 static field 만을 담은 클래스. 보통 유틸성 클래스로 helper의 성격을 갖는 클래스.
이런 클래스들은 클래스 메서드와 클래스 인스턴스이니 객체 인스턴스가 필요없는 클래스여서 private로 생성자를 선언함으로 외부 클래스에서 인스턴스화를 못하게 막아준다.
종종 유틸리티 클래스에서 abstract 클래스로 만들고 기본 생성자 선언을 안한 클래스들이 보이는데
이는 직접적으로 해당 유틸리티 클래스를 인스턴스로 만들지는 못하지만 상속을 받은 하위 클래스에서는 인스턴스로 만들어져 인스턴스 메서드, 필드로 접근할 수 있게된다. 그러므로 기본생성자를 private로 생성하여 아얘 생성을 못하게 막아주는 것이 좋다.
private 생성자를 선언했을 경우 외부 클래스에서 접근할 수 없지만 클래스 내부에서는 생성할 수 없으니 생성자 블록 내에 정적 유틸리티 클래스를 생성이 불가한 코드를 구현해주는 것이 좋다.
public class UtilityClass {
/**
* 정적 유틸리티 클래스로 인스턴스를 만들 수 없다.
*/
private UtilityClass(){
// 생성하게 되면 에러를 날린다.
throw new AssertionError();
}
...
}
정적 유틸리티 클래스는 어플리케이션에서 전역으로 쓰여질 변수, 기능들을 모아놓았다.
대표적인 정적 유틸리티 클래스로 java.lang.Math가 있다.
'Effective Java > 키워드' 카테고리의 다른 글
정규표현식 (Regular Expression) (0) | 2023.01.06 |
---|---|
의존 객체 주입 패턴 (Dependency Injection Pattern) (0) | 2023.01.06 |
직렬화 역직렬화 (Siriallizable Desirializable) (0) | 2023.01.04 |
공변 반환 타입 (Covariant Return Type) (0) | 2023.01.04 |
열거 타입 (Enum) (0) | 2023.01.04 |