¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ  11Àå Reflection  11.5.6 ¸â¹öÇʵ忡 °ª ¼ÂÆÃÈ÷±â  

 

11.5.6 ¸â¹öÇʵ忡 °ª ¼ÂÆÃÈ÷±â

 

ÇʵåÀÇ °ªÀ» ¼ÂÆÃÇÏ´Â ¹æ¹ýÀº ÇʵåÀÇ °ªÀ» ¾ò¾î³»´Â ¿ª ¹æÇâÀ¸·Î »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.

n        Point p = new Point(100, 200);

n        p.x = 50;

ÀÌ¿Í °°Àº ±¸¹®À» ¿¹Á¦·Î ¸¸µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

SettingField.java(ƯÁ¤°´Ã¼¿¡ ÇʵåÀÇ °ª ¼ÂÆÃÇϱâ)

import java.awt.*;

import java.lang.reflect.*;

public class SettingField{

   public static void main(String[] arg)

   throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException  

   {

       Class c = Class.forName("java.awt.Point");

       Field f = c.getField("x");

       Point p = new Point(100,200);

       f.set(p, new Integer(50));

       System.out.println(p.toString());

   }

}

C:\JavaExample\11>javac SettingField.java

C:\JavaExample\11>java SettingField

java.awt.Point[x=50,y=200]

 

¸ÕÀú ÀÓÀÇÀÇ Class c¿¡¼­ ¸â¹öÇÊµå °´Ã¼¸¦ ¾ò¾î ³À´Ï´Ù.

 

n        Class c = Class.forName("java.awt.Point");

n        Field f = c.getField("x");

 

±×¸®°í ½ÇÁ¦ °´Ã¼ p¿¡ Field°´Ã¼ f¸¦ ÀÌ¿ëÇÏ¿© °ªÀ» ¼ÂÆÃÇÏ°Ô µË´Ï´Ù. ¹°·Ð, ÀÔ·ÂÇÒ °ªÀº ObjectÇü½ÄÀ¸·Î ³Ö¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù.

 

n        Point p = new Point(100,200);

n        f.set(p, new Integer(50));

 

Point°´Ã¼ p¸¦ ÅëÇØ¼­ °ªÀ» ÀÔ·ÂÇÏ´Â °ÍÀº ³Ê¹«³ªµµ ½±½À´Ï´Ù. ÇÏÁö¸¸ PointŬ·¡½ºÀÇ ClassŬ·¡½º¸¦ ÀÌ¿ëÇÏ¿© °ªÀ» ¼ÂÆÃÇÏ´Â ¹æ¹ýÀº ¾à°£ ´Ù¸¥ ¸éÀ» º¸À̰í ÀÖ½À´Ï´Ù. »ç¿ëÇÏ´Â ¹æ¹ýÀº ¾à°£¾¿ Â÷À̰¡ ÀÖÁö¸¸ ´ëºÎºÐ ÇÊ¿äÇÑ Çü½ÄÀÇ Method, Field, ConstructorÀ» ¸ÕÀú ±¸ÇÑ ÈÄ ½ÇÁ¦°´Ã¼¿¡ Àû¿ëÇÏ´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ
ÀúÀÚ:ÃÖ¿µ°ü