JAVA反射シリーズのMethod,java.lang.reflect.Methodの使用.
最近プロジェクトを书いて、反射の比较的に多くて、1つの総括を书いて、调べます.
Methodは反射の最も基本的なクラスです.
直接コード:
テスト
student類を加えるのを忘れました.私の別の文章を見てください.
クラスを呼び出す方法.
まずこのクラスクラスクラスを取得します
ここで使う
clzを取得し、
そしてclzを利用する.
Methodオブジェクトの取得
ここで後は渡さなくてもいいですが、このとき呼び出されるのは名前の無参メソッドです.のように
doRun()メソッドが呼び出されます.
取得する方法と送信するパラメータのタイプが異なる場合は、個数が異なるとエラーが発生します(重荷を排除します)
あなたが望む方法の相手を手に入れた後.
彼を直接呼び出すことができます
注意:メソッドパラメータ順序、メソッド受信パラメータ順序.
早速やってみましょう.もっと高度な機能を求めて、多くAPIを見て、ハッ、みんなが一緒に検討することを歓迎します.
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を見て、ハッ、みんなが一緒に検討することを歓迎します.