对接收数组参数的成员方法进行反射

来源:互联网 发布:js获取手机屏幕宽度 编辑:程序博客网 时间:2024/05/18 12:37

用反射方式执行某个类中的main方法:编写一个程序,这个程序可以根据用户提供的类名,去执行类中的main方法。用普通方式调完后,大家要明白为什么要用反射方式去调用?
实现代码:

package cn.yzx.day1;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 {      // TODO Auto-generated method stub      //TestArguments.main(new String[]{"111","222","333"});这种普通调用方法,但是之前就要知道类名      String startingClassName = args[0];      Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);      //因为main函数值传入的一个数组参数,如果直接用new String[]{"111","222","333"},编译器就会拆包,会出现三个      //参数,用下面两种方法就能解决此问题      //mainMethod.invoke(null, new Object[]{new String[]{"111","222","333"}});      mainMethod.invoke(null, (Object)new String[]{"111","222","333"});  //main为静态方法,用null   }}class TestArguments{   public static void main(String[] args){      for(String arg : args){         System.out.println(arg);      }   }}

运行前先设置Run Configurations,如下图:

这里写图片描述

运行结果:

这里写图片描述

0 0
原创粉丝点击