¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ  11Àå Reflection  11.5.3 ¸Å°³º¯¼ö ÀÖ´Â ¸Þ¼­µå È£ÃâÇϱ⠠

 

11.5.3 ¸Å°³º¯¼ö ÀÖ´Â ¸Þ¼­µå È£ÃâÇϱâ

 

ÀÚ! ÀÌÁ¦ ClassŬ·¡½º¸¦ ÀÌ¿ëÇÏ¿© ¸Þ¼­µå¸¦ È£ÃâÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¸Å°³º¯¼ö¸¦ ¸ÂÃß¾îÁÖ´Â °ÍÀº ¾à°£ ±î´Ù·Ó½À´Ï´Ù. ÇöÀç È£ÃâÇÏ·Á´Â ¸Þ¼­µå´Â StringŬ·¡½ºÀÇ substring¸Þ¼­µåÀÔ´Ï´Ù. ƯÁ¤ ¹®ÀÚ¿­¿¡¼­ ÀϺκÐÀ» ÃßÃâÇÏ´Â ¸Þ¼­µåÁÒ.

 

n        String s = new String(¡°Hello World¡±);

n        String r = s.substring(6,11)

n        °á°ú: World

 

ÀÌ¿Í °°Àº ±¸¹®À» Class·Î ±¸ÇöÇÑ ¿¹Á¦¸¦ Çѹø »ìÆì º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

MethodInvok.java(¸Å°³º¯¼ö ÀÖ´Â ¸Þ¼­µå È£ÃâÇϱâ)

import java.awt.*;

import java.lang.reflect.*;

public class MethodInvoke{

   public static void main(String[] arg)

      throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException,

          NoSuchMethodException, IllegalAccessException, InvocationTargetException

   {

Class c = String.class;

      Class[] parameterTypes = new Class[] {int.class, int.class};

      Method m = c.getMethod("substring", parameterTypes);

Object[] arguments = new Object[] {new Integer(6),new Integer(11)};

String s = "Hello World";

Object result = m.invoke(s, arguments);

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

   }

}

C:\JavaExample\11>javac MethodInvoke.java

C:\JavaExample\11>java MethodInvoke

World

 

ÀÏ´Ü Class c¿¡¼­ È£ÃâÇϰíÀÚ ÇÏ´Â Method¸¦ ¾ò¾î³»¾î¾ß ÇÕ´Ï´Ù. ¾î¶°ÇÑ ¸Þ¼­µå¸¦ È£ÃâÇÒ ÁöºÎÅÍ Ã£´Â´Ù°í »ý°¢ÇÏ½Ã¸é ÆíÇÏ°Ô ÀÌÇØÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.

 

n        Class[] parameterTypes = new Class[] {int.class, int.class};

n        Method m = c.getMethod("substring", parameterTypes);

 

ÀÌ ¶§ ¸Þ¼­µåÀÇ À̸§°ú È£ÃâÇÏ·Á´Â ¸Þ¼­µåÀÇ ¸Å°³º¯¼ö Á¤µµ´Â ¾Ë¾Æ¾ß ÇÕ´Ï´Ù. ¹°·Ð, ¹Ì¼¼ÇÏ°Ô µ¿ÀûÀ¸·Î ã¾Æ ³¾ ¼öµµ ÀÖÁö¸¸, ÀÚ½ÅÀÌ È£ÃâÇÒ ¸Å°³º¯¼ö¿Í ¸Þ¼­µåÀÇ À̸§Á¤µµ´Â ¾Æ´Â °ÍÀ» ±âº»À¸·Î ÇÕ´Ï´Ù.

±×¸®°í, ÀÌ Method mÀ» ÀÌ¿ëÇØ¼­ ¸Þ¼­µå¸¦ È£ÃâÇÕ´Ï´Ù. °´Ã¼ sÀÇ ¸Þ¼­µå¸¦ ¸®Ç÷º¼ÇÀ» ÀÌ¿ëÇØ¼­ È£ÃâÇÏ´Â °ÍÀÔ´Ï´Ù. ¹°·Ð À̶§µµ ÀûÀýÇÑ ¸Å°³º¯¼ö¸¦ Object¹è¿­ÀÇ ÇüÅ·Π³Ö¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù. À̰Ϳ¡ °ü·ÃµÈ ÄÚµå´Â ´ÙÀ½°ú °°½À´Ï´Ù.

 

n        Object[] arguments = new Object[] {new Integer(6),new Integer(11)};

n        String s = "Hello World";

n        Object result = m.invoke(s, arguments);à s.substring(6,11)

 

¸Å°³º¯¼ö´Â Object¹è¿­ÀÇ ÇüÅ·Π6°ú 11À» ÁغñÇßÀ¸¸ç ±×¸®°í s¶ó´Â °´Ã¼ ³»¿¡ Á¸ÀçÇÏ´Â ¸Þ¼­µå¸¦ Method mÀ» ÅëÇØ¼­ È£ÃâÇϰí ÀÖ½À´Ï´Ù. °á°ú·Î ³ª¿Â Object result´Â ºÐ¸í ¡°Hello World¡±¹®ÀÚÀÇ 6¹øÂ°(0ºÎÅÍ ½ÃÀÛ)ºÎÅÍ 11¹øÂ° ³»¿¡ Á¸ÀçÇÏ´Â ¹®ÀÚ¿­ÀÌ µÉ °ÍÀÔ´Ï´Ù. ±×·±µ¥ ÀÌ·± Àǹ®À» °¡Áú ¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù. ±×³É s.substringÀ» »ç¿ëÇÏÁö ¿Ö ±»ÀÌ º¹ÀâÇÏ°Ô Çϴ°¡? ¸¸¾à, sÀÇ ÇüÀ» ¸ð¸¥´Ù°í »ý°¢ÇØ º¸½Ê½Ã¿À. ±×·¸´Ù¸é À§ÀÇ ¿¹Á¦´Â È¿·ÂÀ» ¹ß»ýÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù. ´ÙÀ½À¸·Î ¸Å°³º¯¼ö ¾ø´Â ¸Þ¼­µå¸¦ È£ÃâÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.



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