¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ  11Àå Reflection  11.4 ClassŬ·¡½ººÐ¼®  

 

11.4. ClassŬ·¡½º ºÐ¼®

 

ClassŬ·¡½º¸¦ ÀÌ¿ëÇÏ¿© Ŭ·¡½ºÀÇ Á¤º¸¸¦ ºÐ¼®ÇØ ³¾ ¼ö ÀÖ´Â °£´ÜÇÑ ¿¹¸¦ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ClassŬ·¡½º¸¦ ÀÌ¿ëÇÏ¿© ÃßÃâµÈ Á¤º¸´Â ´ëºÎºÐ java.lang.reflectÆÐŰÁö ³»¿¡ Á¸ÀçÇϴ Ŭ·¡½ºµéÀÌ´Ï ÀÌÁ¡¿¡ À¯³äÇØ¼­ Çѹø °üÂûÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.

 

ShowClassInfoŬ·¡½º(ClassŬ·¡½º¸¦ ÀÌ¿ëÇÏ¿© Ŭ·¡½º¿¡ ´ëÇÑ Á¤º¸ ÃßÃâ)

import java.lang.reflect.*;

import java.util.Vector;

public class AnalysisClassInfo {

   public int temp =1000;

   public void printShow(){  }

   public static void main(String [] args) {

       try{

          Class c = Class.forName("AnalysisClassInfo");

          System.out.println("====Superclass ¾ò¾î³»±â====");

          Class cla = c.getSuperclass();System.out.println(cla.toString());

          System.out.println("==Constructor [] ¾ò¾î³»±â==");

          Constructor [] ctor = c.getConstructors();

          for(int i=0;i<ctor.length;i++)

              System.out.println(ctor[i].toString());

          System.out.println("====Method [] ¾ò¾î³»±â====");

          Method [] m = c.getMethods();

          for(int i=0;i<m.length;i++)

             System.out.println(m[i].toString());

          System.out.println("====Field [] ¾ò¾î³»±â====");

          Field [] f = c.getFields();

          for(int i=0;i<m.length;i++)

             System.out.println(f[i].toString());

       }catch(Exception e){}     

   }

}

C:\JavaExample\11>javac AnalysisClassInfo.java

C:\JavaExample\11>java AnalysisClassInfo

====Superclass ¾ò¾î³»±â====

class java.lang.Object

==Constructor [] ¾ò¾î³»±â==

public AnalysisClassInfo()

====Method [] ¾ò¾î³»±â====

public static void AnalysisClassInfo.main(java.lang.String[])

public native int java.lang.Object.hashCode()

public final void java.lang.Object.wait() throws java.lang.InterruptedException

public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException

public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException

public final native java.lang.Class java.lang.Object.getClass()

public boolean java.lang.Object.equals(java.lang.Object)

public java.lang.String java.lang.Object.toString()

public final native void java.lang.Object.notify()

public final native void java.lang.Object.notifyAll()

public void AnalysisClassInfo.printShow()

====Method [] ¾ò¾î³»±â====

public int AnalysisClassInfo.temp

public final native java.lang.Class java.lang.Object.getClass()

public boolean java.lang.Object.equals(java.lang.Object)

public java.lang.String java.lang.Object.toString()

public final native void java.lang.Object.notify()

public final native void java.lang.Object.notifyAll()

public void AnalysisClassInfo.printShow()

====Field [] ¾ò¾î³»±â====

public int AnalysisClassInfo.temp

 

Á¦ÀÏ ¸ÕÀú ÇÊ¿äÇÑ ClassŬ·¡½º¸¦ ¸ÕÀú ·ÎµùÇϰí ÀÖ½À´Ï´Ù. ÇöÀç´Â AnalysisClassInfoÀÇ ClassŬ·¡½º¸¦ ¾ò°í ÀÖ½À´Ï´Ù.

 

n        Class c = Class.forName("AnalysisClassInfo");

 

±×¸®°í, AnalysisClassInfoÀÇ ClassŬ·¡½º¸¦ ÀÌ¿ëÇÏ¿© Á¤º¸¸¦ ÃßÃâÇϰí ÀÖ´Â ºÎºÐÀº ´ÙÀ½°ú °°½À´Ï´Ù.

n        Class cla = c.getSuperclass();

n        Constructor [] ctor = c.getConstructors();

n        Method [] m = c.getMethods();

n        Field [] f = c.getFields();

 

Superclass, »ý¼ºÀÚ, ¸Þ¼­µå, ÇÊµå µî ¿©·¯ °¡Áö Á¤º¸¸¦ ÃßÃâÇØ¼­ Ãâ·ÂÇϰí ÀÖ½À´Ï´Ù. ÀÌ Á¤º¸µéÀº ¸ðµÎ ¹è¿­ÀÇ ÇüÅ·ΠµÇ¾î Àֱ⠶§¹®¿¡ Á¤º¸¸¦ Ãâ·ÂÇÏ´Â ºÎºÐÀº µ¿ÀÏÇÕ´Ï´Ù. Çϳª¸¸ ºÐ¼®ÇØ º¸ÁÒ.

n         Method [] m = c.getMethods();

n         for(int i=0;i<m.length;i++)

n             System.out.println(m[i].toString());

 

Method ¹è¿­ °´Ã¼ mÀÇ ±æÀÌ´Â m.lengthÀ̸ç, ±× ±æÀÌ ¸¸Å­ loopó¸®ÇÏ¿© Á¤º¸¸¦ Ãâ·ÂÇϰí ÀÖ½À´Ï´Ù. ´Ù¸¥ °Íµéµµ ¹è¿­ÀÇ ÇüÅ·ΠµÇ¾î Àֱ⠶§¹®¿¡ ÀÌ¿Í °°Àº ¹æ¹ýÀ¸·Î ÇØ°á ÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

ÀÌ·¯ÇÑ ¹æ¹ýÀ̿ܿ¡µµ, ClassŬ·¡½º¿¡¼­ Ŭ·¡½ºÀÇ Á¤º¸¸¦ ºÐ¼®ÇÏ´Â ¸Þ¼­µå´Â ¾ÆÁÖ ´Ù¾çÇÕ´Ï´Ù. °ÅÀÇ ÇÊ¿äÇÑ ¿ä¼ÒµéÀº ´Ù ÀÖ´Ù°í º¸¸é ÆíÇϰÚÁÒ. ±×·±µ¥, Á¤º¸¸¦ ¾ò¾î³Â´Ù¸é ¾î¶»°Ô »ç¿ëÀ» ÇØ º¸¾Æ¾ß°ÚÁÒ. ClassŬ·¡½º¸¦ ÀÌ¿ëÇÏ¿© Ŭ·¡½ºÀÇ Á¤º¸¸¦ ºÐ¼®Çß´Ù¸é ¹º°¡ ÇØ¾ß ÇÏÁö ¾Ê°Ú½À´Ï±î? Áö±Ý±îÁö´Â Á¤º¸¸¸À» ÃßÃâÇßÀ» »Ó ¾Æ¹«°Íµµ ÇÏÁö ¾Ê¾Ò½À´Ï´Ù. ´ÙÀ½À¸·Î ClassÁ¤º¸¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.



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