๐ฏ ์์ดํ 36. ๋นํธ ํ๋ ๋์ EnumSet์ ์ฌ์ฉํ๋ผ.
๋นํธ ํ๋ ์ด๊ฑฐ ์์ - ๊ตฌ๋ฅ๋ค๋ฆฌ ๊ธฐ๋ฒ!
public class Text { public static final int STYLE_BOLD = 1 << 0; // 1 public static final int STYLE_ITALIC = 1 << 1; // 2 public static final int STYLE_UNDERLINE = 1 << 2; // 4 public static final int STYLE_STRIKETHROUGH = 1 << 3; // 5 public void applyStyles(int styles){ ... } }
๋ค์๊ณผ ๊ฐ์ ์์ผ๋ก ๋นํธ๋ณ OR๋ฅผ ์ฌ์ฉํด ์ฌ๋ฌ ์์๋ฅผ ํ๋์ ์งํฉ์ผ๋ก ๋ชจ์ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ฒ ๋ง๋ค์ด์ง ์งํฉ์ ๋นํธ ํ๋๋ผ ํ๋ค.
text.applyStyles(STYLE_BOLD | STYLE_ITALIC);
ํ์ง๋ง ๋นํธ ํ๋๋ ์ ์ ์ด๊ฑฐ ์์์ ๋จ์ ์ ๊ทธ๋๋ก ์ง๋๋ฉฐ, ์ถ๊ฐ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊น์ง ์๋ค.
๋นํธ ํ๋ ๊ฐ์ด ๊ทธ๋๋ก ์ถ๋ ฅ๋๋ฉด ๋จ์ํ ์ ์ ์ด๊ฑฐ ์์๋ฅผ ์ถ๋ ฅํ ๋๋ณด๋ค ํด์ํ๊ธฐ๊ฐ ์ด๋ ต๋ค.
EnumSet - ๋นํธ ํ๋๋ฅผ ๋์ฒดํ๋ ํ๋์ ๊ธฐ๋ฒ
public class Text { public enum Style {BOLD, ITALIC, UNDERLINE, STRIKETHROUGH} // ์ด๋ค Set์ ๋๊ฒจ๋ ๋๋, EnumSet์ด ๊ฐ์ฅ ์ข๋ค. public void applyStyles(Set<Style> styles) { System.out.printf("Applying styles %s to text%n", Objects.requireNonNull(styles)); } // ์ฌ์ฉ ์ public static void main(String[] args) { Text text = new Text(); text.applyStyles(EnumSet.of(Style.BOLD, Style.ITALIC)); } }
EnumSet ํด๋์ค๊ฐ ๋นํธ ํ๋ ์์ค์ ๋ช ๋ฃํจ๊ณผ ์ฑ๋ฅ์ ์ ๊ณตํ๊ณ ์ด๊ฑฐ ํ์ ์ ์ฅ์ ๊น์ง ์ ์ฌํ๋ค.*
์ฐธ๊ณ ์๋ฃ
Joshua Bloch, ใEffective Java 3/Eใ, ๊ฐ์๋งต์ ์ฎ๊น, ํ๋ก๊ทธ๋๋ฐ์ธ์ฌ์ดํธ(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=