黑马程序员技术交流社区

标题: 反射Method类中的问题。 [打印本页]

作者: 王睿    时间: 2012-2-27 16:12
标题: 反射Method类中的问题。
  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. }
复制代码

作者: 雷楚光    时间: 2012-2-27 16:46
你没有导入包  
import java.lang.reflect.Method;
作者: tanlei200620    时间: 2012-2-27 16:56
Class.forName(startingClassName)没有产生 Class对象,原因是你没有给出要加载的类的完整类名,完整类名是 包+类名
作者: tanlei200620    时间: 2012-2-27 16:58
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);
            }
    }
}

这个是我自己的测试,自己运行下试试。传递 参数的时候一定要加 包名




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2