Reflection

์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์„œ, ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด์ง€๋งŒ, ๋•Œ๋กœ๋Š” ์‹คํ–‰ ์ค‘์— ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ž‘ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์ž๋ฐ” ๋ฆฌํ”Œ๋ ‰์…˜(Java Reflection)์ด๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ž๋ฐ” ๋ฆฌํ”Œ๋ ‰์…˜์ด๋ž€?

์ž๋ฐ” ๋ฆฌํ”Œ๋ ‰์…˜์€ ์‹คํ–‰ ์ค‘์ธ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ, ํ•„๋“œ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๋™์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ์•„๋‹ˆ๋ผ ์‹คํ–‰ ์‹œ๊ฐ„์— ํด๋ž˜์Šค์˜ ์ •๋ณด๋ฅผ ์•Œ์•„๋‚ด๊ณ , ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์€ ์‹คํ–‰ ์ค‘์— ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜, ํด๋ž˜์Šค์˜ ํ•„๋“œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ๋ฆฌํ”Œ๋ ‰์…˜์€ ์ผ๋ฐ˜์ ์ธ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ, ๋ช‡ ๊ฐ€์ง€ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•˜๊ณ  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•  ๋•Œ
ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ํ•„๋“œ์— ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ
์• ๋…ธํ…Œ์ด์…˜(annotation) ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•  ๋•Œ

๋ฆฌํ”Œ๋ ‰์…˜์˜ ์ฃผ์š” ํด๋ž˜์Šค ์ž๋ฐ” ๋ฆฌํ”Œ๋ ‰์…˜์€ java.lang.reflect ํŒจํ‚ค์ง€์— ์ •์˜๋œ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ํด๋ž˜์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Class: ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋ฉ”ํƒ€์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ , ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•˜๊ณ  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
Field: ํด๋ž˜์Šค์˜ ํ•„๋“œ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ , ํ•„๋“œ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
Method: ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ , ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
Constructor: ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์— ๋Œ€ํ•œ ๋ฉ”ํƒ€์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ , ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Last updated