62,614
社区成员
发帖
与我相关
我的任务
分享
Class clazz=new Class[]{String[].class};
package com.jong.test.reflect;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class InvokeMainMethod {
/**
* @param args
* @throws IllegalAccessException
* @throws InstantiationException
*/
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
String className="com.jong.test.reflect.ReflectInvoke";
Class clazz=null;
try {
clazz=Class.forName(className);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Object o=clazz.newInstance();
System.out.println("========================");
System.out.println(o.toString());
// clazz.getMethod("main", parameterTypes)
System.out.println(clazz.getClass());
System.out.println("========================");
ReflectInvoke.main(new String[]{});
Class[] arg=new Class[]{};
这里怎么获得String类型的数组????
Object[] args1=new Object[]{};
//实参数,要调用对象的实参
InvokeMainMethod.method(o,"main");
System.out.println("========================");
try {
InvokeMainMethod.forname(o, "print", null,null);
System.out.println("========================");
InvokeMainMethod.forname(o, "main",arg,args1);
System.out.println("========================");
InvokeMainMethod.invokeMethod(o, "main",new Object[]{"a","b"});
InvokeMainMethod.invokeMethod(o, "main",null);
System.out.println("========================");
} catch(Exception e){
System.out.println(e);
}
}
public static Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception {
Class ownerClass = owner.getClass();
Class[] argsClass = new Class[args.length];
for (int i = 0, j = args.length; i < j; i++) {
argsClass[i] = args[i].getClass();
}
Method method = ownerClass.getMethod(methodName, argsClass);
return method.invoke(owner, args);
}
}