소프트웨어 개발/Java - Basic

리플렉트 하는거

늘근이 2014. 10. 20. 11:35
import java.lang.reflect.Method; 

public class ReflectTest02 { 
    public static void main(String[] args) throws Exception{ 
        String className = "ReflectData"; 
        Class clazz = Class.forName(className); 
        //Method[] methods = clazz.getMethods(); 
        Method[] methods = clazz.getDeclar
edMethods(); 
        for(int i = 0; i < methods.length; i++){ 
            System.out.println(methods[i].getName()); 
        } 
    } 
} 
class ReflectData{ 
    static int i; 
    static{ 
        i = 5; 
        System.out.println("static block"); 
    } 
    public void print1(){ 
        System.out.println("print1"); 
    } 

    public void print2(){ 
        System.out.println("print2"); 
    } 
} 








import java.lang.reflect.Method; 

public class ReflectTest02 { 
    public static void main(String[] args) throws Exception{ 
        String className = "ReflectData"; 
        String methodName = "print1"; 
        Class clazz = Class.forName(className); 
        Object obj = clazz.newInstance(); 


&
nbsp;        
        // 메소드 정보를 가지고있는 Method 클래스의 
        // 인스턴스를 반환한다. 
        Method method = clazz.getMethod(methodName,  
                            null); 
        // obj가 가지고 있는 메소드를 실행하라. 클래스이름이나 메서드이름이 정해져있지 않을때 실행하는 방법임
        method.invoke(obj, null); 
         
        ReflectData d = new ReflectData(); 
        d.print1(); 
    } 
} 
class ReflectData{ 
    static int i; 
    static{ 
        i = 5; 
        System.out.println("static block"); 
    } 
    public void print1(){ 
        System.out.println("print1"); 
    } 
    public void print1(String str){ 
        System.out.println("print1" + str); 
    } 
    public void print2(){ 
        System.out.println("print2"); 
    } 
}