黑马程序员技术交流社区
标题:
反射Method类中的问题。
[打印本页]
作者:
王睿
时间:
2012-2-27 16:12
标题:
反射Method类中的问题。
public class ReflectMethod {
//需求:写一个程序,能够根据用户提供的类名,去执行该类中的main方法。
public static void main(String[] args) throws Exception
{
String startingClassName = args[0];
Method mainMethod = Class.forName(startingClassName).getMethod("main",String[].class);
//这里提示Method无法解析为类型。为什么呢????????????????
//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);
}
}
}
复制代码
作者:
雷楚光
时间:
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