java反射main方法参数注意

时间:2021-09-22 16:58:21
public class ReflectMethodMain {
public static void main(String[] args) throws Exception {
Method methodMain=TestArgument.class.getMethod("main", String[].class);
/*jdk 1.4之前的版本不支持可变参数,对组类的参数会自动拆包然后用来匹配数据参数,以下的示例中
的参数如果只传一个数组不做处理会出现参数不比配错误*/
//methodMain.invoke(null, args); //错误,会出现参数不匹配错误
//methodMain.invoke(null, new Object[] {args}); //在拆包之前 打一次包,所以拆开包后的参数类型只有数组类型无参数不匹配错误
methodMain.invoke(null, (Object)args); //显示的声明了参数是Object类型以此不在拆包,以此也无参数不匹配错误
//invoke方法的第一个参数为null时表示,调用的是静态(static)方法
}
}

class TestArgument {
public static void main(String[] args) {
for (String s : args) {
System.out.println(s);
}
}
}