¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ  11Àå Reflection  11.5.5 ¸â¹öÇʵåÀÇ °ª ¾Ë¾Æ³»±â  

 

11.5.5 ¸â¹öÇʵåÀÇ °ª ¾Ë¾Æ³»±â

 

ÀÌÁ¦ ¸â¹öÇʵåÀÇ °ª¿¡ ´ëÇØ¼­ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. Point°´Ã¼ p¿¡ ¸â¹öº¯¼öÀÇ °ªÀÌ x´Â 100, ±×¸®°í y´Â 200À¸·Î ÀԷµǾî ÀÖ´Ù¸é ´ç¿¬È÷ p.xÀÇ °ªÀº 100ÀÔ´Ï´Ù.

 

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

n        p.x

 

¸®Ç÷º¼ÇÀÇ ±â¹ýÀ» ÀÌ¿ëÇÏ¿© ¸â¹öº¯¼öÀÇ °ªÀ» ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

GettingField.java(ƯÁ¤°´Ã¼¿¡ ´ëÇÑ ÇʵåÀÇ °ª ¾Ë¾Æ³»±â)

import java.awt.*;

import java.lang.reflect.*;

public class GettingField{

   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);

Object x = f.get(p);

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

   }

}

C:\JavaExample\11>javac GettingField.java

C:\JavaExample\11>java GettingField

100

 

ÀÓÀÇÀÇ Class c·ÎºÎÅÍ ¸â¹öº¯¼ö xÀÇ Field°´Ã¼¸¦ ¾ò¾î³À´Ï´Ù. Field°´Ã¼¸¦ ÀÌ¿ëÇÏ¿© ½ÇÁ¦ °´Ã¼pÀÇ ¸â¹öº¯¼öÀÎ x°ªÀ» ÃßÃâÇϵµ·Ï ÇϰڽÀ´Ï´Ù. ÀÏ´Ü Field°´Ã¼¸¦ ¾ò¾î ³»´Â ±¸¹®Àº ´ÙÀ½°ú °°½À´Ï´Ù.

 

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

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

 

±×¸®°í, Çʵ尴ü f¸¦ ÀÌ¿ëÇÏ¿© Point°´Ã¼ pÀÇ ¸â¹öº¯¼ö xÀÇ °ªÀ» ¾ò¾î³»´Â °ÍÀº ´ÙÀ½°ú °°½À´Ï´Ù.

 

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

n        Object x = f.get(p);

 

ÀÌ·¯ÇÑ ¹æ¹ýÀº ÀÌ¹Ì ¸®Ç÷º¼Ç±â¹ýÀ¸·Î ¸Þ¼­µå¸¦ È£ÃâÇÒ ¶§µµ »ç¿ëÇßÀ¸´Ï ½±°Ô ÀÌÇØ ÇϽø®¶ó »ý°¢µË´Ï´Ù. ´ÙÀ½À¸·Î, ¹Ý´ë°³³äµµ »ý°¢ÇØ º¼ ¼ö ÀÖ½À´Ï´Ù. °ªÀ» ¾ò¾î³½´Ù¸é °ªÀ» ³ÖÀ» ¼öµµ ÀÖÁö ¾Ê°Ú½À´Ï±î? °ªÀ» ³Ö´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.



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