¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ  11Àå Reflection  11.5.2 »ý¼ºÀÚ ¸Å°³º¯¼ö°¡ ÀÖ´Â °´Ã¼»ý¼ºÇϱ⠠

 

11.5.2 »ý¼ºÀÚ ¸Å°³º¯¼ö°¡ ÀÖ´Â °´Ã¼»ý¼ºÇϱâ

 

11.5.1Àý¿¡¼­´Â ´ÙÇàÈ÷µµ »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö°¡ ¾ø¾ú±â ¶§¹®¿¡ º° ¹«¸® ¾øÀÌ ÇÑ ÁÙÀÇ ÄÚµùÀ¸·Î °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù. ÇÏÁö¸¸, À̹ø¿¡´Â ¸Å°³º¯¼ö°¡ ÀÖ´Ù°í °¡Á¤ÇØ º¸ÁÒ. ¸¸¾à »ý¼ºÀÚ ¸Þ¼­µå°¡ ¸Å°³º¯¼ö¸¦ °¡Áö°í ÀÖ´Â ³ð¹Û¿¡ ¾ø´Ù¸é ¸Å°³º¯¼ö¸¦ »ç¿ëÀÚ°¡ ³Ö¾îÁÖ¾î¾ß ÇÕ´Ï´Ù. ¸Å°³º¯¼ö¸¦ °¡Áø »ý¼ºÀÚ°¡ ¸Å°³º¯¼ö¾øÀÌ È£ÃâµÇ¾îÁö´Â ¹ýÀº ¾øÀ¸´Ï±î¿ä. ÀÚ ±×·¸´Ù¸é, ¾î¶»°Ô ¸Å°³º¯¼ö ÀÖ´Â »ý¼ºÀÚ¸¦ È£ÃâÇÏ´ÂÁö Á÷Á¢ È®ÀÎÇϽñ⠹ٶø´Ï´Ù. Å×½ºÆ®¸¦ À§Çؼ­ StringŬ·¡½ºÀÇ ¸Å°³º¯¼ö°¡ ÀÖ´Â »ý¼ºÀÚ¸¦ È£ÃâÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

n        new String(¡°Hello World¡±)

 

ÀÌ ±¸¹®À» ¸®Ç÷º¼ÇÀÇ ±â¹ýÀ¸·Î ÇØ°áÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.

 

NewObjectTest(ClassŬ·¡½º¸¦ ÀÌ¿ëÇÏ¿© ¸Å°³º¯¼ö ÀÖ´Â »ý¼ºÀÚ ¸Þ¼­µå È£Ãâ)

import java.lang.reflect.*;

public class NewObjectTest2{

   public static void main(String[] arg)

   throws ClassNotFoundException, InstantiationException, IllegalAccessException

         ,NoSuchMethodException, InvocationTargetException

   {

       Class c = String.class;

       Class[] argType = new Class[]{String.class};

       Constructor con = c.getConstructor(argType);

       Object[] initArg = new Object[]{"Hello World"};

       Object obj = con.newInstance(initArg);

       if(obj instanceof String){

          System.out.println("StringÇüÀÌ ¸Â½À´Ï´Ù.:" + obj);

       } else {

          System.out.println("VectorÇüÀÌ ¾Æ´Õ´Ï´Ù.");

       }

   }

}

C:\JavaExample\11>javac NewObjectTest2.java

C:\JavaExample\11>java NewObjectTest2

StringÇüÀÌ ¸Â½À´Ï´Ù.:Hello World

 

ÇüÀÌ ¹ºÁö ¸ð¸£´Â Class c°¡ ÀÖ´Ù´Â °¡Á¤ ÇÏ¿¡, ¸Å°³º¯¼ö°¡ StringÇü ÇϳªÀÎ »ý¼ºÀÚ ¸Þ¼­µå¸¦ Class c¿¡¼­ ã½À´Ï´Ù. ã´Â ÀÛ¾÷Àº ´ÙÀ½°ú °°Àº Äڵ带 ÀÌ¿ëÇÏ°Ô µË´Ï´Ù.

 

n        Class[] argType = new Class[]{String.class};//¸Å°³º¯¼öÇüÀÇ ¹è¿­

n        Constructor con = c.getConstructor(argType);

 

 ±×¸®°í ³ª¼­,  Constructor conÀ» ÀÌ¿ëÇÏ¿© newInstance¸Þ¼­µå¸¦ È£ÃâÇϰí ÀÖ½À´Ï´Ù. ¹°·Ð newInstance¸Þ¼­µå´Â ConstructorŬ·¡½ºÀÇ ¸â¹ö¸Þ¼­µåÀ̸ç newInstanceÇÒ ¶§ ÇÊ¿äÇÑ ¸Å°³º¯¼ö¸¦ ³Ö¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù.

 

n        Object[] initArg = new Object[]{"Hello World"};//»ý¼ºÀÚ ¸Å°³º¯¼ö ¹è¿­

n        Object obj = con.newInstance(initArg);

 

ÇÊ¿äÇÑ ¸Å°³º¯¼ö´Â Object¹è¿­ ÇüÅ·Πµé¾î°¡±â ¶§¹®¿¡ ÇÊ¿äÇÑ ¸¸Å­ ¸¸µå½Ã¸é µË´Ï´Ù. ±×¸®°í, Object¹è¿­À» newInstanceÀÇ ¸Å°³º¯¼ö·Î ³Ö¾îÁÖ¸é ¸ðµç ÀÛ¾÷Àº ³¡ÀÌ ³³´Ï´Ù. ±×¸®°í ½ÇÁ¦·Î ¸¸µé¾îÁö´Â È®ÀÎÀýÂ÷´Â ¾Õ¿¡¼­µµ ¾ð±ÞÇÑ instanceof¶ó´Â Ű¿öµå¸¦ ÀÌ¿ëÇÏ¿© È®ÀÎÇϰí ÀÖ½À´Ï´Ù.



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