개발자는 기록이 답이다

@UtilityClass란? 본문

Spring/트러블 슈팅

@UtilityClass란?

slow-walker 2024. 3. 25. 08:30

 

UtilityClass는 lombok v1.16.2에서 실험적인 기능으로 도입되었다.

@UtilityClass를 사용하면,  컴파일 시점에 생성자 private 으로 만들어 주고, 모든 메서드를 static으로 만들어 준다.

 

package com.devkuma.tutorial.lombok;

import lombok.experimental.UtilityClass;

@UtilityClass
public class UtilityClassTutorial {

    public int plus(int a, int b) {
        return a + b;
    }
}

 

위 코드는 @UtilityClass로 인해 아래와 같이 변경된다.

package com.devkuma.tutorial.lombok;

public final class UtilityClassTutorial {
    public static int plus(int a, int b) {
        return a + b;
    }

    private UtilityClassTutorial() {
        throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
    }
}

 

 

결론

주로 유틸리티성 클래스를 만들때 기본생성자를 private으로 사용하지 못하게 했었는데, @UtilityClass를 사용함으로써 더 명시적으로 표현 되니 자주 활용하면 좋을 것 같다.

아래 예시에서는 모든 메서드를 static으로 만들어주는 @UtiltiyClass를 사용했지만, 헷갈리지 않게 명시적으로 static을 붙여줬다.

 

 

참고 링크:

https://projectlombok.org/features/experimental/UtilityClass