๋ฐ์ํ
@UtilityClass
- UtilityClass๋ฅผ ์์ฑํ ๋, ์ดํํฐ๋ธ ์๋ฐ์์ ์ ํธ ํด๋์ค์ ๋ํ ์ธ๊ธ์ด ์์๋ ๊ธฐ์ต์ด ๋์ ๊ตฌ๊ธ๋ง ํ๋ค๊ฐ ์ฐพ์ ์ด๋ ธํ ์ด์
- boilerplate๋ก ๊ฐ์ฃผํ ๋งํผ ์ผ๋ฐ์ ์ธ์ง์ ๋ํ ๋
ผ์์ด ์๋ ํ์์ด๋ผ ์คํ ๊ธฐ๋ฅ์ผ๋ก ๋์
๋์๋ค๊ณ ํจ (lombok v1.16.2)
- boilerplate : ์ต์ํ์ ๋ณ๊ฒฝ์ผ๋ก ์ฌ๋ฌ๊ณณ์์ ์ฌ์ฌ์ฉ๋๋ฉฐ, ๋ฐ๋ณต์ ์ผ๋ก ๋น์ทํ ํํ๋ฅผ ๋๋ ์ฝ๋๋ฅผ ๋งํ๋ค.
- boilerplate : ์ต์ํ์ ๋ณ๊ฒฝ์ผ๋ก ์ฌ๋ฌ๊ณณ์์ ์ฌ์ฌ์ฉ๋๋ฉฐ, ๋ฐ๋ณต์ ์ผ๋ก ๋น์ทํ ํํ๋ฅผ ๋๋ ์ฝ๋๋ฅผ ๋งํ๋ค.
- ๊ธฐ๋ฅ
- private ์์ฑ์๊ฐ ์๋์ผ๋ก ์์ฑ๋์ด ์ธ์คํด์คํ ํ ์ ์๊ฒ ๋ง์
- final class ์ผ๋ก ์ง์ ๋์ด ์์ ๋ฐ์ ์ ์๊ฒ ๋จ
- ๋ด๋ถ์ ๋ชจ๋ ๋ฉค๋ฒ์ ๋ฉ์๋๋ static ์ฒ๋ฆฌ ๋จ. (inner class static ์ฒ๋ฆฌ ๋จ)
// With Lombok
import lombok.experimental.UtilityClass;
@UtilityClass
public class UtilityClassExample {
private final int CONSTANT = 5;
public int addSomething(int in) {
return in + CONSTANT;
}
}
// Vanilla Java
public final class UtilityClassExample { // final ์ถ๊ฐ ๋จ
private static final int CONSTANT = 5; // static ์ถ๊ฐ ๋จ
private UtilityClassExample() { // ์์ฑ์ private ์ฒ๋ฆฌ ๋จ
throw new java.lang.UnsupportedOperationException("This is a utility class and cannot be instantiated");
}
public static int addSomething(int in) { // static ์ถ๊ฐ ๋จ
return in + CONSTANT;
}
}
๐ Reference
๋ฐ์ํ