Java反射機制 invoke呼叫含多個引數的方法
通過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");