티스토리 뷰

자바 클래스나 메소드 이름을 스트링으로 받아서 실행할 수 있나 찾아봤다.


package classname;

public class AppTest{
    public void printIt(){
      System.out.println("printIt() no param");
    }
    
    public void printItString(String temp){
      System.out.println("printIt() with param String : " + temp);
    }
    
    public void printItInt(int temp){
      System.out.println("printIt() with param Int : " + temp);
    }
} 


package classname;

import java.lang.reflect.Method;

public class ReflectApp{
  public static void main(String[] args){
    Class noparams[]={};
    
    Class[] paramString=new Class[1];
    paramString[0]=String.class;
    
    Class[] paramInt=new Class[1];
    paramInt[0]=Integer.TYPE;
    
    try{
      Class cls=Class.forName("classname.AppTest");
      Object obj=cls.newInstance();
      
      Method method=cls.getDeclaredMethod("printIt", noparams);
      method.invoke(obj,null);
      
      method=cls.getDeclaredMethod("printItString", paramString);
      method.invoke(obj, new String("AA"));
      
      method=cls.getDeclaredMethod("printItInt", paramInt);
      method.invoke(obj, 123);
    }catch(Exception e){
      e.printStackTrance();
    }
  }
}


실행하면 결과는

printIt() no param
printIt() with param String : AA
printIt() with param Int : 123


위의 소스에서 보다시피 클래스 이름과 메소드 이름을 스트링으로 실행한것을 볼 수 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함