Java
유틸리티 클래스 사용 시 주의 사항 "Add a private constructor to hide the implicit public one"
mezo
2024. 10. 26. 19:07
728x90
반응형
모든 메서드가 static인 유틸리티 클래스에서 "Add a private constructor to hide the implicit public one"라는 메시지를 볼 수 있다.
이 경고는,
Java에서는 클래스를 선언하면 기본적으로 파라미터가 없는 public 생성자가 암묵적으로 제공되어서,
클래스 외부에서도 해당 클래스의 인스턴스를 만들 수 있게 되어, 이를 방지하라는 의미이다.
보통 유틸리티 클래스는 인스턴스 생성이 불필요하므로,
생성자를 private으로 만들어 인스턴스를 생성하지 못하게 하는 것이 일반적인 방식이다.
다음 코드는 예시이다.
package com.tmax.talkstream.dto.service;
import lombok.Builder;
import lombok.Getter;
import org.springframework.data.domain.Sort;
public class RoomDto {
// 유틸리티 클래스의 기본 생성자 private 처리
private RoomDto() {
throw new IllegalStateException("Dto group class");
}
@Getter
@Builder
public static class GetReq {
private String roomId;
private int page;
private int size;
private String field;
private Sort.Direction sort;
}
}
728x90
반응형