๊ตฌ์ฒด์ ์ธ ํด๋์ค ํ์ ์ ์์ง ๋ชปํด๋ ํด๋น ํด๋์ค์ ์ ๋ณด์ ์ ๊ทผํ ์ ์๊ฒ ํด์ฃผ๋ java API
public class People {
private String name;
private int age;
private int nprogram;
public People(String name, int age) {
this.name = name;
this.age = age;
nprogram = 0;
}
public void coding() {
this.nprogram++;
}
public int getNprogram() {
return nprogram;
}
} Object objPeople = new People("kim", 25);
//Objectํ์ People์ coding์ ํ์ง ๋ชปํจ.
objPeople.coding (x)
- ์๋ฐ๋ ์ปดํ์ผ ํ์์ ํ์ ์ด ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๋ ์ด๋ฏธ ์ปดํ์ผ ํ์์ Objectํ์ ์ผ๋ก ๊ฒฐ์ ์ด ๋์ด People์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. Object ํ์ ์ ์ ๋ณด๋ง ์ฌ์ฉ ๊ฐ๋ฅ.
Class PeopleClass = People.class;
Method coding= PeopleClass.getMethod("coding");
coding.invoke(objPeople, null);
System.out.println(PeopleClass.getMethod("getNprogram")
.invoke(objPeople,null));
- Reflection API๋ฅผ ์ด์ฉํ์ฌ Peopleํด๋์ค๋ฅผ ์ป์ด์ค๊ณ , ํด๋น ํด๋์ค์์ ๋ฉ์๋๋ฅผ ์ป์ด์ฌ ์ ์๋ค. invoke์ ์ธ์๋ก ์คํํ ๊ฐ์ฒด์ args๋ฅผ ๋๊ฒจ์ค๋ค. getNprogram ์คํ ๊ฒฐ๊ณผ 0์ผ๋ก ์ด๊ธฐํ๋์ด ์๋ ๊ฐ์ด 1๋ก ์ฆ๊ฐํ์์์ ํ์ธํ ์ ์๋ค.
String objPeopleName =PeopleClass.getDeclaredField("name").get(objPeople).toString();
System.out.println(objPeopleName);
Field[] objPeoplefields =PeopleClass.getDeclaredFields();
for(Field f: objPeoplefields){
System.out.println(f.get(objPeople));
}
- ์ฌ์ง์ด private๋ก ์ ์ธ๋ ํ๋์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ์ ์์ ์ผ๋ก objPeople์ ์์ฑํ ๋ ์ธ์๋ก ์ ๋ฌํด ์ฃผ์๋ ๊ฐ์ด ์ถ๋ ฅ๋์๋ค.
- public ๋ง ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋ getFields๋ฅผ ์ฌ์ฉ.
f.set(objPeople, f.get(objPeople) + " Reflection");
- private ํ๋๊ฐ์ ๋ณ๊ฒฝ๋ํ ๊ฐ๋ฅํ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์๋ฐ์ฝ๋๋ ์ปดํ์ผ๋ฌ๋ฅผ ๊ฑฐ์ณ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํ๋์ด Static ์์ญ์ ์ ์ฅ๋๋ค. Reflection API๋ ์ด ์์ญ์ ์ ๊ทผํ์ฌ ํด๋น ์ ๋ณด๋ค์ ํ์ฉํ ์ ์๋ค.
์ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ์์ Reflection์ ์ฌ์ฉํ๋ค. ์คํ๋ง ํ๋ ์์ํฌ์์๋ ๋น ํฉํ ๋ฆฌ์์ Reflection์ ์ด์ฉํ์ฌ Bean์ ๊ด๋ฆฌํ๊ณ , Hibernate์์ ๋ํ Refelction์ ์ด์ฉํ์ฌ ์ํฐํฐ ํด๋์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ์ ํ๋ค. ๋๋ฌธ์ default constructor๋ง ์์ฑํ ์ ์์ผ๋ฉด ํ๋์ ๊ฐ์ ์ฃผ์ ํด์ค ์ ์๋ค.
์์๋ก ์๋ํด๋ณธ ๋ฉ์๋๋ค ๋ง๊ณ ๋ ๋ง์ ๋ฉ์๋๊ฐ ์์ผ๋ฉฐ ์ ๊ทผ์ง์ ์, ์์ฑ์, ํจํค์ง ์ ๋ณด, ์ด๋ ธํ ์ด์ ๋ฑ ์ ๋ง์ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค.
- Hibernate์์ ์ด๋ป๊ฒ ์ํฐํฐ์ ํ๋๊ฐ์ ์ฃผ์
์์ผ์ฃผ๋๊ฐ๋ฅผ ์์๋ณด๋ค๊ฐ Reflection์ ๋ํด ์์๋ณด๊ฒ ๋์๋ค.
- ์์ด๋นํ ์ ์ฉํ API์ด์ง๋ง ์ฑ๋ฅ๋ฉด์์ ์กฐ๊ธ ๋จ์ ์ด ์๊ณ , ์๊น ๋ณด์๋ฏ private์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ฃผ์๊ฐ ํ์ํ ๊ฒ ๊ฐ๋ค.
