A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1黑马币
下面用反射方法调用一个类的主函数的代码,请问第五、六行的代码 怎么确定调用的是他本身的main函数还是下面 TestArguments类的main函数的?
public class ReflectionTest {
public static void main(String[] args) throws ReflectiveOperationException, IllegalAccessException, Exception, Throwable {

             String starttingName=args[0];
            Method mainmethod=Class.forName(starttingName).getMethod("main", String[].class);
            mainmethod.invoke(null, (Object)new String[]{"aaa","bbb","ccc"});   
             mainmethod.invoke(null, new Object[]{new String[]{"aaa","bbb","ccc"}});
}
class TestArguments{  
           public static void main(String[] args){  
               for(String arg : args){  
                    System.out.println(arg);  
               }  
          }  
}  

最佳答案

查看完整内容

必然先运行那个public的。其他的调用哪个就运行哪个。不调用就不运行。

8 个回复

倒序浏览
15383016390 发表于 2015-6-13 12:23
谢谢你的回答!我运行的是整个Java文件,这两个类是写在一个Java文件了的。我就是不明白如果在这个代码后 ...

必然先运行那个public的。其他的调用哪个就运行哪个。不调用就不运行。
回复 使用道具 举报
本帖最后由 YongBao_Summer 于 2015-6-11 22:28 编辑

public指定的那个就是被调用的。TestArguments的main只能作为被调用的东西。使用eclipse只会运行那个public类的main函数。
而在命令行的时候要运行哪一个则需要编译运行相应的那个类。
这下清楚了吧。
回复 使用道具 举报
可以断点调试一下吧
回复 使用道具 举报
YongBao_Summer 发表于 2015-6-11 15:08
public指定的那个就是被调用的。TestArguments的main只能作为被调用的东西。使用eclipse只会运行那个public ...

谢谢你的回答!我运行的是整个Java文件,这两个类是写在一个Java文件了的。我就是不明白如果在这个代码后面再写一个和class TestArguments并列的类,同时有main函数时会去调用那哪个类的main函数
回复 使用道具 举报
赞!!!!!!!!!
回复 使用道具 举报
学习下,是不是意思是先运行权限最大的那个呀,然后如果没调用另一个main的话这个main运行完再运行那个main呀
回复 使用道具 举报
逝....曾经 发表于 2015-6-20 14:03
学习下,是不是意思是先运行权限最大的那个呀,然后如果没调用另一个main的话这个main运行完再运行那个main ...

其他类不被调用就不会运行其main函数
回复 使用道具 举报
15383016390 发表于 2015-6-21 06:38
其他类不被调用就不会运行其main函数

额,好吧,懂啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马