매일 조금씩

유틸리티 클래스 사용 시 주의 사항 "Add a private constructor to hide the implicit public one" 본문

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
반응형