借了网上一位仁兄的例子,改了改。
直接上代码:
package reflect;
public class PlainJavaClass {
public int a = 2;
public int b = 3;
public PlainJavaClass() {
}
public PlainJavaClass(int a, int b) {
this.a = a;
this.b = b;
}
public int add() {
return a + b;
}
public int plus(int[] a, int b) {
return a[0] - b;
}
}
package reflect;
import java.lang.reflect.*;
public class ReflectJavaClass {
public void invokePlain() {
Class Plain = null;
Method add = null;
Method plus = null;
Class[] plusPara = { int[].class, int.class };
int[] in = { 30, 50 };
Object[] transPlusPara = { in, 20 };
Object addReturnObj = null;
Object plusReturnObj = null;
try {
Plain = Class.forName("reflect.PlainJavaClass");
} catch (ClassNotFoundException e) {
e.printStackTrace();
return;
}
try {
add = Plain.getDeclaredMethod("add", null);
plus = Plain.getDeclaredMethod("plus", plusPara);
} catch (SecurityException e) {
e.printStackTrace();
return;
} catch (NoSuchMethodException e) {
e.printStackTrace();
return;
}
try {
addReturnObj = add.invoke(new PlainJavaClass(5, 2), null);
plusReturnObj = plus.invoke(new PlainJavaClass(), transPlusPara);
} catch (IllegalArgumentException e) {
e.printStackTrace();
return;
} catch (IllegalAccessException e) {
e.printStackTrace();
return;
} catch (InvocationTargetException e) {
e.printStackTrace();
return;
}
Integer addReturnValue = (Integer) addReturnObj;
Integer plusReturnValue = (Integer) plusReturnObj;
System.out.println("return value :" + addReturnValue);
System.out.println("return value :" + plusReturnValue);
}
public static void main(String[] args) {
new ReflectJavaClass().invokePlain();
}
}