通过Java的反射机制调用某个方法,并传入参数。

1.只传入一个参数hello world:

import java.lang.reflect.Method;
 import java.util.Date;public class InvokeMethodTest {
     public static void main(String[] args) {
         test1();
     }    public static void test2() {
         try {
             Class<?> c = Class.forName("java.util.Date");
             // 反射类的方法:
             Method m = c.getMethod("getTime", new Class<?>[] {});
             long l = (Long) m.invoke(c.newInstance(), new Object[] {});
             System.out.println(l);
             // 反射一个类的实例:
             Date d = (Date) c.newInstance();
             System.out.println(d.getTime());
         } catch (Exception e) {
         }
     }    public static void test1() {
         try {
             Class<?> c = InvokeMethodTest.class;
             // 反射类的方法:
             Method m = c.getMethod("print", String.class);
             m.invoke(c.newInstance(),"hello world");
         } catch (Exception e) {
             System.out.println(e);
         }
     }    public static void print(String printData) {
         System.out.println("=====================================");
         System.out.println(printData);
     }
     
     public static void print(String firstPrintData,String secondPrintData) {
         System.out.println("=====================================");
         System.out.println("firstPrintData:"+firstPrintData+", secondPrintData:"+secondPrintData);
     }
 }2.传入两个参数hello world以及 i am lee
import java.lang.reflect.Method;
 import java.util.Date;public class InvokeMethodTest {
     public static void main(String[] args) {
         test1();
     }    public static void test2() {
         try {
             Class<?> c = Class.forName("java.util.Date");
             // 反射类的方法:
             Method m = c.getMethod("getTime", new Class<?>[] {});
             long l = (Long) m.invoke(c.newInstance(), new Object[] {});
             System.out.println(l);
             // 反射一个类的实例:
             Date d = (Date) c.newInstance();
             System.out.println(d.getTime());
         } catch (Exception e) {
         }
     }    public static void test1() {
         try {
             Class<?> c = InvokeMethodTest.class;
             // 反射类的方法:
             Method m = c.getMethod("print", String.class, String.class);
             m.invoke(c.newInstance(),"hello world","I am lee");
         } catch (Exception e) {
             System.out.println(e);
         }
     }    public static void print(String printData) {
         System.out.println("=====================================");
         System.out.println(printData);
     }
     
     public static void print(String firstPrintData,String secondPrintData) {
         System.out.println("=====================================");
         System.out.println("firstPrintData:"+firstPrintData+", secondPrintData:"+secondPrintData);
     }可以比较 这两句话有什么区别,就可以

知道更多的参数该怎样传,简单但是很少用到过,记录一下收工

Method m = c.getMethod("print", String.class, String.class);
 m.invoke(c.newInstance(),"hello world","I am lee");