本帖最后由 杨天皓 于 2012-6-10 22:57 编辑
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectTest {
public static void main(String[] args) throws Exception {
String startingClassName = args[0]; // 这里我在运行的时候会把要执行的Reflect 类的完整类名传进来。
Method method = Class.forName(startingClassName).getMethod("main",String[].class);
method.invoke(null,new Object[]{new String[]{"aa","bb","cc"}});
// 我知道这里是因为JDK1.5兼容了JDK1.4,如果单独传入一个String类型的数组,运行的时候会把他拆开来,
//把数组中的每一个元素都当做一个参数传递,就会出现异常说参数类型不匹配。所以需要再次打包成一个数组来传递。
//我的问题是,为什么要把他打包成一个Object的数组,而不是String的数组。不是说接收的参数和传入的参数要严格一致吗?
//为什么把Object改成String以后编译都通不过.
}
}
public class Reflect {
public static void main(String[] args)
{
for(String str : args)
{
System.out.println(str);
}
}
}
|
|