这样写(假设方法的参数是String[],如main(String[] args)):
Class yourClass = Class.forName("YourClass");//假设你要动态加载的类为YourClassClass[] parameterTypes = new Class[1];//这里你要调用的方法只有一个参数parameterTypes[0] = String.class;//这个参数的类型是String型的Method method = yourClass.getMethod("main", parameterTypes);//这里假设你的类为YourClass,而要调用的方法是mainClass[] args = new Class[2];//假设你要传入两个参数
args[0] = "OK";
args[1] = "NO";method.invoke(yourClass.newInstance(), args);//调用方法
Class yourClass = Class.forName("YourClass");//假设你要动态加载的类为YourClassClass[] parameterTypes = new Class[1];//这里你要调用的方法只有一个参数parameterTypes[0] = String.class;//这个参数的类型是String型的Method method = yourClass.getMethod("main", parameterTypes);//这里假设你的类为YourClass,而要调用的方法是mainClass[] args = new Class[2];//假设你要传入两个参数
args[0] = "OK";
args[1] = "NO";method.invoke(yourClass.newInstance(), args);//调用方法
而且args是一个参数,用invoke时,是否是Object[]的一个值?
a.getClass()不知道可以不?
使用String[].class和getClass()好像是可以的,而且方法调用应该是
method.invoke(null, new Object[]{args});
因为args参数只是一个参数,所以只是参数数组的一项,main方法是static方法,不需要指定实例。但是虽然被调起来,但是还有问题,不过应该不是这方面的问题了,谢谢两位的帮忙
这样写(假设方法的参数是String[],如main(String[] args)):
Class yourClass = Class.forName("YourClass");//假设你要动态加载的类为YourClassClass[] parameterTypes = new Class[1];//这里你要调用的方法只有一个参数parameterTypes[0] = String[].class;//这个参数的类型是String型的/////应该是String[]Method method = yourClass.getMethod("main", parameterTypes);//这里假设你的类为YourClass,而要调用的方法是mainObject[] args = new Object[1];//假设你要传入两个参数////应该是一个
String[] argments = new String[2];//假设你要传入两个参数
argments[0] = "OK";
argments[1] = "NO";
args[0] = argments;method.invoke(yourClass.newInstance(), args);//调用方法你再试试吧,应该可以了