动态方法

来源:互联网 发布:发电厂软件安全 编辑:程序博客网 时间:2024/04/24 16:25

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;
  }

}

原创粉丝点击