黑马程序员技术交流社区

标题: 用反射调用静态函数的问题 [打印本页]

作者: 张龙欢    时间: 2013-6-10 14:36
标题: 用反射调用静态函数的问题
  1. String startingClassName = args[0];
  2. Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
  3. mainMethod.invoke(null, (Object)new String[]{"111","222","333"});   StartingClassName是什么?反射得到类中方法的话 Class.forName(这里不是应该写上类名完整路径吗?) 这里不太明白 怎么获取的?

  4. class TestArguments{
  5.         public static void main(String[] args){
  6.                 for(String arg : args){
  7.                         System.out.println(arg);
  8.                 }
  9.         }
复制代码

作者: 袁梦希    时间: 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,
  1. public class StaticMethodTest {
  2.         public static void main(String[] args) throws Exception {
  3.                 String startingClassName = args[0];
  4.                 Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
  5.                 mainMethod.invoke(null, (Object)new String[]{"111","222","333"});
  6.         }
  7. }
复制代码
如果是在命令行中,可以直接通过java StaticMethodTest com.itheima.ArgumentsTest的格式向main方法中传入一个字符串数组参数,即String[] args = {"TestArguments"}
如果是在Eclipse编辑器中,需要在Run Configurations中配置运行的参数,上面的com.itheima.ArgumentsTest

在本例中需要传入TestArguments类的完整类名,并通过Class.forName(startingClassName)获得该类对应的Class实例,并调用其静态方法。







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