黑马程序员技术交流社区

标题: 反射获取主函数 问一下 [打印本页]

作者: 闫江龙    时间: 2011-12-31 23:54
标题: 反射获取主函数 问一下
本帖最后由 闫江龙 于 2012-1-1 01:52 编辑

String startingClassName = args[0];
Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
mainMethod.invoke(null, (Object)new String[]{"111","222","333"});   tartingClassName是什么?反射得到类中方法的话 Class.forName(这里不是应该写上类名完整路径吗?) 这里不太明白 怎么获取的?

class TestArguments{
        public static void main(String[] args){
                for(String arg : args){
                        System.out.println(arg);
                }
        }
作者: 刘忠德    时间: 2012-1-1 00:50
args表示从命令行读取的参数,这个参数 是传递给main()函数的,形如public static void main(String[] args){},所以args[0]是指你从命令行输入的第一个参数, 这里需要你手动输入完整的类名传递给Class.forName()~~能看明白吧~
作者: 闫江龙    时间: 2012-1-1 01:52
要自己输入 ………… 了解了  string这样的就不能用了啊 必须有主函数喽
作者: 为梦而战    时间: 2012-1-1 11:41
本帖最后由 为梦而战 于 2012-1-1 20:04 编辑

       StartingClassName是要接收一个类名,以告诉下面的代码你要获取的是哪个类的main方法,
Class.forName()这个方法是要获得上面接收到的那个类的字节码,上面已经获得了这个类了,这里就不用写类的完全路径了。
    至于上面那个类是如何得到的那就的看实际情况了,如果类已写好放在电脑中了,可以通过getRealPath()方法获得此类的绝对路径。
如果类是后来写好的,那把类做成配置文件,通过指定配置文件来读取得到那个类。
作者: 徐传任    时间: 2012-10-7 17:42
看看。。。。。。。。。。。。。。




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