Community

๐Ÿ•Š๏ธ ์ž๋ฐ” ์ œ๋„ค๋ฆญ

์ด ๊ธ€์—์„œ ์ž๋ฐ” ์ œ๋„ค๋ฆญ์ด๋ž€ ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์˜ˆ์ œ์— ๋Œ€ํ•ด ๋ฐฐ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ๋„ค๋ฆญ์ด๋ž€ ์ •์ˆ˜, ๋ฌธ์ž์—ด ๋“ฑ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ผ๋ฐ˜ํ™”ํ•˜๋Š” ํƒ€์ž…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ ์™œ ์ž๋ฐ”์—์„œ ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€? 1๏ธโƒฃ ํƒ€์ž… ์•ˆ์ •์„ฑ ์ž๋ฐ”์˜ ์ œ๋„ค๋ฆญ์€ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ œ๋„ค๋ฆญ์€ ์ปดํŒŒ์ผ ํƒ€์ž„ ๋™์•ˆ ํƒ€์ž… ๋ถˆ์ผ์น˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค๋‹ˆ๋‹ค. 2๏ธโƒฃ ๋ถˆํ•„์š”ํ•œ ํƒ€์ž… ์บ์ŠคํŠธ ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ ์ปฌ๋ ‰์…˜์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž… ์บ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 3๏ธโƒฃ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ์ž๋ฐ”์˜ ์ œ๋„ค๋ฆญ ํƒ€์ž… 1๏ธโƒฃ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜(T)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธ๋ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ „๋‹ฌํ•˜์—ฌ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` class Test { // ํด๋ž˜์Šค ๋‚ด์šฉ } ``` 2๏ธโƒฃ ์ œ๋„ค๋ฆญ ๋ฉ”์†Œ๋“œ ์ œ๋„ค๋ฆญ ๋ฉ”์†Œ๋“œ๋กœ ์•Œ๋ ค์ง„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ``` public class Test{ //generic method public static void printData(T data) { System.out.println("Data: "+ data); } } ``` ๐Ÿ“Œ ์ œ๋„ค๋ฆญ ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ * T: Type * E: Element * K: Key * V: Value * N: Number ๐Ÿ“Œ์ œ๋„ค๋ฆญ ์™€์ผ๋“œ์นด๋“œ ์ •์ˆ˜, ๋ฌธ์ž์—ด, ๋ฌธ์ž ๋“ฑ๊ณผ ๊ฐ™์€ ํŠน์ • ์œ ํ˜•์„ ์ •์˜ํ•˜๋Š” ๋Œ€์‹  ์™€์ผ๋“œ์นด๋“œ(?)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์™€์ผ๋“œ์นด๋“œ๋Š” ์„ธ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. * Upper bound wildcards A * A ํด๋ž˜์Šค๋Š” B ํ•˜์œ„ ํด๋ž˜์Šค์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜ ํƒ€์ž…์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. * Lower bound wildcards A * A ํด๋ž˜์Šค๋Š” B์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ๋˜๋Š” B์˜ ์Šˆํผ ํด๋ž˜์Šค๋ฅผ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. * Noon-bounded wildcards A * A ํด๋ž˜์Šค๋Š” ์–ด๋–ค ํƒ€์ž…์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค