黑马程序员技术交流社区
标题:
用反射调用静态函数的问题
[打印本页]
作者:
张龙欢
时间:
2013-6-10 14:36
标题:
用反射调用静态函数的问题
String startingClassName = args[0];
Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
mainMethod.invoke(null, (Object)new String[]{"111","222","333"}); StartingClassName是什么?反射得到类中方法的话 Class.forName(这里不是应该写上类名完整路径吗?) 这里不太明白 怎么获取的?
class TestArguments{
public static void main(String[] args){
for(String arg : args){
System.out.println(arg);
}
}
复制代码
作者:
袁梦希
时间:
2013-6-12 19:07
你的问题一般都太厉害 {:soso_e120:}
作者:
张龙欢
时间:
2013-6-12 19:59
袁梦希 发表于 2013-6-12 19:07
你的问题一般都太厉害
:'(:'(:'(:'(:'(
作者:
苑永志
时间:
2013-6-14 00:47
本帖最后由 苑永志 于 2013-6-14 01:06 编辑
楼主没有贴出完整的代码,String startingClassName = args[0];中的args即是启动时的main方法中的参数String[] args,
public class StaticMethodTest {
public static void main(String[] args) throws Exception {
String startingClassName = args[0];
Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
mainMethod.invoke(null, (Object)new String[]{"111","222","333"});
}
}
复制代码
如果是在命令行中,可以直接通过java
StaticMethodTest com.itheima
.ArgumentsTest的格式向main方法中传入一个字符串数组参数,即String[] args = {"TestArguments"}
如果是在Eclipse编辑器中,需要在Run Configurations中配置运行的参数,上面的
com.itheima
.ArgumentsTest
aaa.png
(10.35 KB, 下载次数: 0)
下载附件
2013-6-14 01:01 上传
在本例中需要传入TestArguments类的完整类名,并通过Class.forName(
startingClassName
)获得该类对应的Class实例,并调用其静态方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2