通过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");