Reflection
๊ฐ๋จํ๊ฒ๋ง ์ง๊ณ ๊ฐ๋๋ค.
์ฐํ
์ฝ ํผ๋๋ฐฑ
์ฐํ ์ฝ ํ๋ฆฌ์ฝ์ค์ ์ด๋ฌํ ํผ๋๋ฐฑ์ด ์์๋ค.
private ํจ์๋ฅผ ํ ์คํธํ๊ณ ์ถ๋ค๋ฉด ํด๋์ค ๋ถ๋ฆฌ๋ฅผ ๊ณ ๋ คํ๋ค. priavate method๊ฐ ๊ฐ๋ ์ฑ ์ด์์ ์ญํ ์ ํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ญํ ์ ์ํํ๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ํ์ด๋ฐ์ด ์๋์ง ๊ณ ๋ คํด๋ผ. ์ฆ,
priavate ํจ์๋ฅผ ํ ์คํธ ํ๊ณ ์ถ๋ค๋ฉด ํด๋์ค ๋ถ๋ฆฌ๋ฅผ ๊ณ ๋ คํ๋ค.
๊ฐ๋ ์ฑ์ ์ด์ ๋ก ๋ถ๋ฆฌํ private ํจ์๋ public ๊ฒ์ฆ์ด ๊ฐ๋ฅํ๋ค. ๋ํ public ํจ์ ๋ด์์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์์ฐ์ค๋ ํ ์คํธ ๋ฒ์์ ํฌํจ ๋ ์ ์๋ค.
ํ์ง๋ง ๊ฐ๋ ์ฑ ์ด์์ผ๋ก ๋ง์ ์ฑ ์์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๋จ์ผ ์ฑ ์์ ๋ง๊ฒ ํจ์๋ฅผ ๋ถ๋ฆฌํด์ผ ํ๋๋ก ๊ณ ๋ฏผํด์ผ ํ๋ค.
ํ์ง๋ง ์์ ์ ํ ์คํธ ๊ด๋ จ ๊ณต๋ถ(Junit, Unit test, etc..)๋ฅผ ํ๋ค๊ฐ Reflection๋ ํฌํจ๋์ด ์์๋ค.
๊ทธ ๋น์ ๋ญ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ํด๋์ค์ ์ง์ ์ ์ผ๋ก ์ ๊ทผํด์ ๋ฉ์๋๋ ๋ฉค๋ฒ์ ์ ๊ทผ ํ๋ ๊ธฐ์ต์ด ์๋ค.
Reflection
๋ฆฌํ๋ ์ ์ ๊ตฌ์ฒด์ ์ธ Class Type์ ์์ง ๋ชปํด๋ ํด๋น Class์ ํ์ , ๋ฉ์๋ ๋ฉค๋ฒ์ ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๋ Java API๋ผ๊ณ ํ๋ค. ๋ฐํ์์ ๋์ ์ผ๋ก ํน์ Class ์ ๋ณด๋ฅผ ์ถ์ถํ ์ ์๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ด๋ค.
ํน์ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์ป์ด์ค๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
ํด๋์ค์ด๋ฆ.class์ธ์คํด์ค ๊ฐ์ฒด์ getClass() methodClass.forName()
๋ฆฌํ๋ ์
์ฌ์ฉ๋ฒ
์ค๋ช ์ ๋๋ฌด ์ ํด์ฃผ์ ์ ๊ทธ๋๋ก ๊ฐ์ ธ์๋ค.
Jackson, hibernate๋ ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ๊ณ ์๋ค. ๊ฐ์ฒด๋ฅผ json ํ์ ์ผ๋ก ๋ณ๊ฒฝํด์ฃผ๋ jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ObjectMapper๋ฅผ ์ดํด๋ณด์.
jackson์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ObjectMapper๊ฐ ์ด๋ป๊ฒ Json์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์์๊น?
Person์ด๋ผ๋ ํด๋์ค๊ฐ ์ฌ์ฉ์๋ฅผ ๋ง๋ค ๊ฒ์ด๋ผ๊ณ ์์ํ๊ณ getter๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ ธ์์๊น?
์๋๋ค. ๋ฆฌํ๋ ์ API๋ฅผ ์ฌ์ฉํด์ Person์ด๋ผ๋ ํด๋์ค ์ ๋ณด๋ฅผ ๋ฐ์์จ๋ค. ๊ทธ๋ฆฌ๊ณ โgetโ์ผ๋ก ์์ํ๋ ๋ฉ์๋๋ฅผ ์ฐพ์์จ ๋ค ํ๋๊ฐ์ ์ ๊ทผํด์ json ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณํํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ธ์คํด์ค๋ง ๋๊ฒจ์ฃผ๋ฉด ๋๋ค.
๋ฆฌํ๋ ์
์ ์ง์ํ๋ค.
private method์ ์ ๊ทผํด์ ํ ์คํธ๋ ๊ฐ๋ฅํ์ง๋ง, ๊ถ์ฅํ์ง ์๋๋ค.
๋ฆฌํ๋ ์ ์ ํตํ ์ ๊ทผ์ ์ปดํ์ผ ํ์์ ์๋ฌ๋ฅผ ์ก๊ธฐ ์ด๋ ต๊ณ , ์ฝ๋ ๋ณ๊ฒฝ์ด๋ ๋ฆฌํฉํ ๋ง ์ ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค.
ํนํ ๋ฉ์๋์ ์ด๋ฆ์ด๋ ํ๋ผ๋ฏธํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ณ๊ฒฝ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐ์ํ์ง ๋ชปํ๋ค.
๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ๋ฉด ํด๋์ค ๋ด๋ถ ๊ตฌ์กฐ์ ์์กดํ๊ฒ ๋์ด์ ํด๋์ค์ ๊ตฌํ์ด ๋ณ๊ฒฝ๋๋ฉด ํ ์คํธ ์ฝ๋๋ ํจ๊ป ์์ ๋์ด์ผ ํ๋ค. ์ด๋ ๊ฒฐํฉ๋๊ฐ ๋์์ ธ ์ ์ง๋ณด์๋ฅผ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.
Last updated