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