@Repeatable
@Repeatable
์ Java 8๋ฒ์ ์ดํ ๋ฉํ ์ด๋
ธํ
์ด์
์ผ๋ก, ์ด๋
ธํ
์ด์
์ ๋ฐ๋ณต ์ ์ฉํ ์ ์๊ฒ ํ๋ค. Java8 ์ด์ ์๋ ๋ฐ๋ณต ์ ์ฉํ๊ณ ์ถ์ ์ด๋
ธํ
์ด์
์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ฉํ๋ค.
// case 1
@GreenColor
@BlueColor
@RedColor
public class RGBColor { ... }
// case 2
@Color(colors={"green", "blue", "red"}
public class RGBColor { ... }
@GreenColor
, @BlueColor
, @RedColor
์ด๋ ๊ฒ ๊ฐ๊ฐ์ ์ด๋
ธํ
์ด์
์ ์์ฑํ๊ฑฐ๋, ๋ฐฐ์ด ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ ๊ตฌํํ์๋ค.
Java 8์ดํ ๋ถํฐ๋ @Repeatable
์ด๋
ธํ
์ด์
์ ์ ๊ณตํด์ฃผ๋ฉฐ, ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
Repeatable Annotation ํ์ ์ ์ ์ธ(์ค ์ฌ์ฉํ ์ด๋ ธํ ์ด์ )
@Repeatable
์ Container annotation ์ ๋ฌ@Repeatable(value = Colors.class) // @Retention(RetentionPolicy.RUNTIME) public @interface Color { String value(); // }
์ปจํ ์ด๋ ์ด๋ ธํ ์ด์ ํ์ ์ ํฌํจํ์ฌ ์ ์ธ(๋ฌถ์ ๊ฐ์ ๊ด๋ฆฌํ๋ ์ปจํ ์ด๋ ์ด๋ ธํ ์ด์ )
์ปจํ ์ด๋ ์ด๋ ธํ ์ด์ ์ ๋ด๋ถ ์ด๋ ธํ ์ด์ ์ ๋ฐํํ๋
value()
๋ฉ์๋๋ฅผ ์ ์ํด์ผํ๋ค.@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Colors { Color[] value(); }
์์ ๊ฐ์ด @Repeatable
์ด๋
ธํ
์ด์
์ผ๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ ์ ์๋ค.
@Color("green")
@Color("blue")
@Color("red")
public class RGBColor { ... }
์ด๋, ํ๊ฐ์ง ์ฃผ์ํ ์ ์ด ์๋ค. ํ์ ์ด๋
ธํ
์ด์
(@Color
)๊ฐ ํ๊ฐ๋ง ์ ์๋ ๊ฒฝ์ฐ ์ปจํ
์ด๋ ์ด๋
ธํ
์ด์
(@Colors
)๋ก ๋ฌถ์ด์ง ์์ผ๋ฏ๋ก, ํ์ ์ด๋
ธํ
์ด์
(@Color
)์๋ @Retention(RetentionPolicy.RUNTIME)
๋ฅผ ์ ์ธํด์ฃผ์ด์ผํ๋ค.
์ฐธ๊ณ
Last updated
Was this helpful?