动态方法

import java.lang.reflect.*;

/**
 * 测试动态方法
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class dynamicMethod {
  public dynamicMethod() {
  }

  public static void main(String[] args) {
    dynamicMethod ttt = new dynamicMethod();
    ttt.showme0();
    try {
      //Method m = ttt.getClass().getMethod("test", new Class[0]);
      //m.invoke(ttt, new Object[0]);
      ttt.getClass().getMethod("test", new Class[0]).invoke(ttt, new Object[0]);

      String realArgs = "带有一个参数";
      Class[] class1 = {
          realArgs.getClass()};
      Object[] object1 = {
          realArgs};
      ttt.getClass().getMethod("test", class1).invoke(ttt, object1);

      System.out.println(ttt.getClass().getMethod("getString", new Class[0]).invoke(ttt, new Object[0]));

    }
    catch (Exception ex) {}
  }

  public void showme0() {
    try {
      dynamicMethod t = new dynamicMethod();
      Class c = t.getClass();
      Class[] cargs = new Class[2];
      String[] realArgs = {"第一个参数", "第二个参数"};
      cargs[0] = realArgs.getClass();
      Integer in = new Integer(2);
      cargs[1] = in.getClass();
      Method m = c.getMethod("test", cargs);
      Object[] inArgs = new Object[2];
      inArgs[0] = realArgs;
      inArgs[1] = in;
      m.invoke(t, inArgs);
    }
    catch (Exception e) {
      System.out.println(e);
    }
  }

  public void showme1() {
    try {
      Class[] cargs = new Class[2];
      String[] realArgs = {"第一个参数", "第二个参数"};
      cargs[0] = realArgs.getClass();
      Integer in = new Integer(2);
      cargs[1] = in.getClass();
      Method m = getClass().getMethod("test", cargs);
      Object[] inArgs = new Object[2];
      inArgs[0] = realArgs;
      inArgs[1] = in;
      m.invoke(this, inArgs);
    }
    catch (Exception e) {
      System.out.println(e);
    }
  }

  public void showme2() {
    try {
      Method m = this.getClass().getMethod("test", new Class[0]);
      m.invoke(this, new Object[0]);
    }
    catch (Exception e) {
      System.out.println(e);
    }
  }

  public void test(String[] str, Integer stri) {
    for (int j = 0; j < str.length; j++) {
      System.out.println(str[j]);
    }
    System.out.println(stri.intValue());
  }

  public void test() {
    System.out.println("没有参数的调用");
  }

  public void test(String strin) {
    System.out.println(strin);
  }
  public String getString(){
    String tempStr="这是取回来的字符串";
    return tempStr;
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值