반응형
결론
보통은 공통 함수를 만들기 위해 @Bean 혹은 @Component를 사용할 수도 있지만 유틸리티 클래스를 만들기 위해 static을 사용할 수 있다.
static은 상태에 대한 저장이나 다른 메소드의 상태를 의존한다거나 하는 경우가 아닌 경우(Autowired로 의존성 주입이 필요하지 않은 경우)에 보통 사용한다.
그래서 static 메소드를 사용하는 경우 배열 관련 메소드나 final 관련 메소드를 모아둔 유틸리티 공통 클래스를 만든다.
보통 이러한 클래스는 서버가 올라갈 때 static의 특성상 메소드를 바로 사용할 수 있기 때문에 생성자를 통해 사용한다는 개념이 아니다. 단순히 메소드 사용을 위함에서 쓰이지만 일부 개발자들은 유틸리티 클래스에 생성자를 적지 않는 경향이 존재하는데 이때 생성자를 적어주지 않으면 컴파일러는 자동으로 기본 public 생성자를 만들게 된다.
그럼 유틸리티 클래스는 객체화가 가능해진다라는 사용 방법에 혼동이 생기는 클래스가 되어버리니 생성자를 private으로 만들어준다면 해당 클래스는 인스턴스화가 불가능해지므로 static 용도로 사용하는 클래스라고 쉽게 정의내릴 수 있다.
private UtilityClass(){
}
728x90
'📘 Effective Java' 카테고리의 다른 글
[Item 6] 불필요한 객체 생성을 피하라 (0) | 2022.09.02 |
---|---|
[Item 5] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2022.09.02 |
[Item 3] private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2022.09.02 |
[Item 2] 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2022.09.02 |
[Item 1] 생성자 대신 정적 팩터리 메서드를 고려하라 (0) | 2022.09.02 |