JAVA反射シリーズのMethod,java.lang.reflect.Methodの使用.


最近プロジェクトを书いて、反射の比较的に多くて、1つの総括を书いて、调べます.
  Methodは反射の最も基本的なクラスです.
  直接コード:
/**
 * @ClassName: Test
 * @Description:    
 * @author JoseanLuo  
 * @date 2014-3-16   8:47:46
 * @version V1.0 
 */
public class Test {
    
   public String doRun(String pk,Student stu,String testrun)
   {
       return pk+stu+testrun;
   }
}

 テスト
import java.lang.reflect.Method;
/**
 * @ClassName: ReflectMethodTest
 * @Description:       
 * @author JoseanLuo  
 * @date 2014-3-18   8:53:51
 * @version V1.0 
 */
public class ReflectMethodTest
{
public static void main(String[] args) throws Exception
{
Class clz=Class.forName("com.cx.test.Test");
System.out.println(clz);
Test test=(Test) clz.newInstance();
Method mt=clz.getMethod("doRun", new Class[]{String.class,Student.class,String.class});
System.out.println(mt);
System.out.println(mt.invoke(test, new Object[]{"i love you ",null,"i fuck you",}));
}
}

student類を加えるのを忘れました.私の別の文章を見てください.
クラスを呼び出す方法.
まずこのクラスクラスクラスを取得します
ここで使う
Class.forName("com.cx.test.Test");

clzを取得し、
そしてclzを利用する.
clz.getMethod("doRun", new Class[]{String.class,Student.class,String.class});

Methodオブジェクトの取得
ここで後は渡さなくてもいいですが、このとき呼び出されるのは名前の無参メソッドです.のように
clz.getMethod("doRun");

doRun()メソッドが呼び出されます.
取得する方法と送信するパラメータのタイプが異なる場合は、個数が異なるとエラーが発生します(重荷を排除します)
あなたが望む方法の相手を手に入れた後.
彼を直接呼び出すことができます
mt.invoke(test, new Object[]{"i love you ",null,"i fuck you",})

注意:メソッドパラメータ順序、メソッド受信パラメータ順序.
早速やってみましょう.もっと高度な機能を求めて、多くAPIを見て、ハッ、みんなが一緒に検討することを歓迎します.