A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王睿 中级黑马   /  2012-2-27 16:12  /  1664 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class ReflectMethod {

  2.         //需求:写一个程序,能够根据用户提供的类名,去执行该类中的main方法。
  3.         public static void main(String[] args) throws Exception
  4.         {
  5.                
  6.                 String startingClassName = args[0];
  7.                 Method mainMethod = Class.forName(startingClassName).getMethod("main",String[].class);
  8.               //这里提示Method无法解析为类型。为什么呢????????????????
  9.                 //mainMethod.invoke(null,new Object[]{new String[]{"123","dfjdf","dkfjk"}});
  10.                 mainMethod.invoke(null,(Object)new String[]{"123","dfjdf","dkfjk"});

  11.         }
  12. }

  13. class TestArguments
  14. {
  15.         public static void main(String[] args) throws Exception
  16.         {
  17.                 for (String arg : args)
  18.                 {
  19.                         System.out.println(arg);
  20.                 }
  21.         }
  22. }
复制代码

3 个回复

倒序浏览
你没有导入包  
import java.lang.reflect.Method;
回复 使用道具 举报
Class.forName(startingClassName)没有产生 Class对象,原因是你没有给出要加载的类的完整类名,完整类名是 包+类名
回复 使用道具 举报
package hh;

import java.lang.reflect.Method;
import hh.TestArguments;
import java.lang.String;
public class ReflectMethod{

    public static void main(String[] args) throws Exception
    {
            
            Class clazz = Class.forName("hh.TestArguments");
            
            System.out.println(clazz.getName());
            Method mainMethod = clazz.getMethod("main",String[].class);
     
            mainMethod.invoke(null,new Object[]{new String[]{"123","dfjdf","dkfjk"}});
            mainMethod.invoke(null,(Object)new String[]{"123","dfjdf","dkfjk"});

    }
}
class TestArguments{
    public static void main(String[] args) throws Exception
    {
            for (String arg : args)
            {
                    System.out.println(arg);
            }
    }
}

这个是我自己的测试,自己运行下试试。传递 参数的时候一定要加 包名
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马