¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ  11Àå Reflection  11.2 ClassŬ·¡½º¶õ?  

 

11.2 ClassŬ·¡½º

 

 ±âº»ÀûÀ¸·Î ¸®Ç÷º¼ÇÀ» Çϱâ À§Çؼ­´Â ClassŬ·¡½º¸¦ ±âº»À¸·Î ¾Ë°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ °³³äÀº ÀÌ¹Ì 10ÀåÀÇ getClass()¸Þ¼­µå ºÎºÐ¿¡¼­ ³íÀǸ¦ °ÅÄ£¹Ù ÀÖÁö¸¸, ÀÌ Àý¿¡¼­ ´Ù½Ã Á¤¸® Çϵµ·Ï ÇϰڽÀ´Ï´Ù. ¹°·Ð, ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ À§Çؼ­´Â 10ÀåÀÇ getClass()¸Þ¼­µå¸¦ ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù. ÀÌ °³³ä ¾øÀÌ ¸®Ç÷º¼ÇÀ» ÀÌÇØÇÑ´Ù´Â °ÍÀº ºÒ°¡´ÉÇÑ °ÍÀ̴ϱî¿ä!

 

 String Ŭ·¡½º¸¦ ¿¹¸¦ µé¾î ¼³¸íÇÏÁÒ. String.java¶ó´Â ÆÄÀÏÀÌ ÀÖ¾úÀ» °ÍÀÔ´Ï´Ù. ±×¸®°í String.java¸¦ ÄÄÆÄÀÏ ÇßÀ» ¶§ String.class¶ó´Â ÆÄÀÏÀÌ »ý¼º µÇ¾úÀ¸¸ç, À̰ÍÀ» ¶óÀ̺귯¸® ÇüÅ·Π¸¸µé¾î µÎ¾ú±â ¶§¹®¿¡ ¿©·¯ºÐÀº ÀÌ¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù.

 

 ÀÏ´Ü, Àڹ٠Ŭ·¡½º ÆÄÀÏÀ» ·ÎµùÇÏ´Â °¡»ó¸Ó½ÅÀÇ ClassLoader´Â String.classÆÄÀÏÀ» ·ÎµùÇÏ°Ô µË´Ï´Ù. ±×¸®°í, ClassLoader´Â String.class¸¦ ClassŬ·¡½ºÀÇ ÇüÅ·Π¸¸µé¾î¼­ °¡»ó¸Ó½Å ³»¿¡ º¸°üÇÏ°Ô µË´Ï´Ù. À̰ÍÀ» ÄÚµùÀ¸·Î Ç¥ÇöÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ µÉ °ÍÀÔ´Ï´Ù.

 

n        Class c = String.class;

 

 ÀÌ¿Í °°Àº ±¸¹®À¸·Î ¿©·¯ºÐµéÀº °¡»ó¸Ó½Å ³»¿¡ String.class¸¦ ·ÎµùÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. À̰ÍÀº StringŬ·¡½ºÀÇ °´Ã¼¸¦ ¸¸µå´Â °ÍÀÌ ¾Æ´Ï¶ó, String.class ±× ÀÚü¸¦ °¡»ó¸Ó½Å¿¡ ·ÎµùÇÏ´Â °ÍÀÔ´Ï´Ù. ClassŬ·¡½º¸¦ ·ÎµùÇÏ´Â ¶Ç ´Ù¸¥ ¹æ¹ýÀº ´ÙÀ½°ú °°Àº ±¸¹®À» »ç¿ëÇÕ´Ï´Ù.

 

n        Class c = Class.forName(¡°java.lang.String¡±);

 

ÀÌ ±¸¹®Àº ½ºÆ®¸µ(¡°java.lang.String¡±)À» ÀÌ¿ëÇØ¼­ ClassŬ·¡½º¸¦ ¾ò´Â ¹æ¹ýÀÔ´Ï´Ù. ÀÌ ¹æ¹ý »Ó¸¸ ¾Æ´Ï¶ó, »ý¼ºµÈ °´Ã¼¿¡¼­µµ ClassŬ·¡½º¸¦ ¾òÀ» ¼öµµ ÀÖ½À´Ï´Ù. À̰ÍÀÌ ¸®Ç÷º¼ÇÀ̶ó°í ¸»ÇÒ ¼ö ÀÖ´Â ºÎºÐÀÌÁÒ.

 

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

n        Object o = s;//ÀÓÀÇÀÇ °´Ã¼ s°¡ Á¸ÀçÇÑ´Ù¸é °´Ã¼ÀÇ ÇüÀ» ¸ð¸¥´Ù°í °¡Á¤.

n        Class c = o.getClass(); à Class c = String.class;

 

À§ÀÇ ±¸¹®¿¡¼­ s¸¦ Upcasting½ÃÄѼ­ °´Ã¼ o°¡ ¾î¶°ÇÑ °´Ã¼ÀÎÁö ¸ð¸¥´Ù°í °¡Á¤ÇÏÁÒ. °´Ã¼ o¸¦ ÀÌ¿ëÇØ¼­ ClassŬ·¡½º¸¦ ¾ò´Â´Ù¸é String.class¸¦ ¾ò´Â °á°ú¿Í °°½À´Ï´Ù. ¸®Ç÷º¼Ç¿¡¼­ ClassŬ·¡½º¸¦ ³íÀÇÇÏ´Â °ÍÀº ClassŬ·¡½º°¡ ¸®Ç÷º¼Ç ±â¹ýÀ» »ç¿ëÇÏ´Â ±âº»ÀÌ µÇ±â ¶§¹®ÀÔ´Ï´Ù. ClassŬ·¡½ºÀÇ ¿¹¸¦ Á÷Á¢ °ËÅäÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.



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