Reflection
์๋ฐ๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก์, ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์์ฑํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํด๋์ค๋ฅผ ์ ์ํ๊ณ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด์ง๋ง, ๋๋ก๋ ์คํ ์ค์ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋์ ์ผ๋ก ์กฐ์ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ ์๋ฐ ๋ฆฌํ๋ ์ (Java Reflection)์ด๋ผ๋ ๊ธฐ๋ฅ์ด ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
์๋ฐ ๋ฆฌํ๋ ์
์ด๋?
์๋ฐ ๋ฆฌํ๋ ์ ์ ์คํ ์ค์ธ ์๋ฐ ํ๋ก๊ทธ๋จ์ ํด๋์ค, ๋ฉ์๋, ํ๋ ๋ฑ์ ์ ๋ณด๋ฅผ ๋์ ์ผ๋ก ๋ถ์ํ๊ณ ์กฐ์ํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ฆ, ์ปดํ์ผ ์๊ฐ์ด ์๋๋ผ ์คํ ์๊ฐ์ ํด๋์ค์ ์ ๋ณด๋ฅผ ์์๋ด๊ณ , ํด๋์ค์ ๋ฉค๋ฒ์ ์ ๊ทผํ๊ฑฐ๋ ์์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํ ์ค์ ๋ค๋ฅธ ํด๋์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฑฐ๋, ํด๋์ค์ ํ๋ ๊ฐ์ ๋ณ๊ฒฝํ๊ฑฐ๋, ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ๋ ์ด์ ๋ฆฌํ๋ ์ ์ ์ผ๋ฐ์ ์ธ ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ ์ฌ์ฉ๋์ง ์์ง๋ง, ๋ช ๊ฐ์ง ์ํฉ์์ ์ ์ฉํฉ๋๋ค.
๋ฐํ์์ ๋์ ์ผ๋ก ํด๋์ค๋ฅผ ๋ก๋ํ๊ณ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ ๋
ํด๋์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฑฐ๋ ํ๋์ ์ ๊ทผํด์ผ ํ ๋
์ ๋
ธํ
์ด์
(annotation) ์ ๋ณด๋ฅผ ํ์ฉํด์ผ ํ ๋
๋ฆฌํ๋ ์ ์ ์ฃผ์ ํด๋์ค ์๋ฐ ๋ฆฌํ๋ ์ ์ java.lang.reflect ํจํค์ง์ ์ ์๋ ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋ฉ๋๋ค. ์ฃผ์ ํด๋์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Class: ํด๋์ค์ ๋ํ ๋ฉํ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ , ๋์ ์ผ๋ก ํด๋์ค๋ฅผ ๋ก๋ํ๊ณ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Field: ํด๋์ค์ ํ๋์ ๋ํ ๋ฉํ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ , ํ๋์ ๊ฐ์ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Method: ํด๋์ค์ ๋ฉ์๋์ ๋ํ ๋ฉํ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ , ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Constructor: ํด๋์ค์ ์์ฑ์์ ๋ํ ๋ฉํ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ , ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Last updated