黑马程序员技术交流社区

标题: 关于main方法的反射,具体哪里错了?何解? [打印本页]

作者: 我叫MT    时间: 2014-2-19 21:33
标题: 关于main方法的反射,具体哪里错了?何解?
本帖最后由 我叫MT 于 2014-3-2 15:22 编辑
  1. class DemoER
  2. {
  3. public static void main(String[] args)
  4. {
  5. String startingClassName = args[0];
  6. Method methodCharAt2 = Class.forName(startingClassName).getMethod("main", String[].class);
  7. //main方法是静态的,invoke()里第一个参数就不用传递对象
  8. //俩次打包,1.5之后后自动拆包,一次打包会被拆成三份,而这里只能传一份
  9. methodCharAt2.invoke(null,new Object[]{new String[]{"111","222","333"}});
  10. //强制转换,相当于打了个死包,不会被拆
  11. //methodCharAt2.invoke(null,(Object)new String[]{"111","222","333"});
  12. }
  13. }
  14. class TestArguments
  15. {
  16. public static void main(String[]args)
  17. {
  18. for(String arg:args)
  19. {
  20. System.out.println(arg);
  21. }
  22. }
  23. }
复制代码
DemoER.java:6: 错误: 找不到符号
                Method methodCharAt2 = Class.forName(startingClassName).getMetho
d("main", String[].class);
                ^
  符号:   类 Method
  位置: 类 DemoER
1 个错误

什么地方错了?怎么解?
关于反射这块的,main方法的反射


作者: 赵永生    时间: 2014-2-23 12:22
这样写一下试一试 Class.forName(startClassName).getMethod("main", String[].class);
把starting 去掉ing 应该就没问题了。
作者: 迪兰奇迹    时间: 2014-2-24 12:24
虽然楼主是五天前发的帖子,不知道楼主解决问题了没有,但是仍然想和楼主探讨一下!
在楼主的代码中:
Method methodCharAt2 = Class.forName(startingClassName).getMethod("main", String[].class);
红色代码得到的是String这个类的字节码文件,通过他无法得到一个名叫“main”的方法,所以会报错!
以下是我变动以后的代码:
import java.lang.reflect.Method;
class DemoER {
        public static void main(String[] args) throws Exception {
                //String startingClassName = args[0];
                System.out.println(args[0]);  // 此处可以通过主函数传值的方式传入args[0];
                System.out.println("这是DemeER类中的主函数哟!");       
        }
}
public class TestArguments {
        public static void main(String[] args) throws Exception {
                Method methodCharAt2 = DemoER.class.getMethod(
                                "main", String[].class);
                // main方法是静态的,invoke()里第一个参数就不用传递对象
                // 俩次打包,1.5之后后自动拆包,一次打包会被拆成三份,而这里只能传一份
                methodCharAt2.invoke(null, null);       
        }
}






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