前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >反射类的main方法

反射类的main方法

原创
作者头像
MonroeCode
发布2018-01-11 14:07:42
1K0
发布2018-01-11 14:07:42
举报
文章被收录于专栏:Java技术分享

有时候我们需要调用一个类的Main方法,也可说是执行这个类的代码。但是这时候这个类我们还没有写好,或者这个类是通过网络运行时传给我们的,我们就不可能在程序中知道我们将要运行的类的名字,这时候我们可以利用java的反射机制去调用main方法,只要在我们执行的时候,将我们需要执行的类的名字传递进去就可以了。这个方法在进行网络编程的时候,有时候我们需要接收一个类,我们只有等到接收到了才知道类的名字叫什么,显然现在在写程序不实际,我们就可以利用反射的方法。

代码语言:js
复制
import java.lang.reflect.Method;  
  
public class CopyOfReflectMain  
{  
    public static void main(String[] args) throws Exception  
    {  
        //这个是我们知道类的名字情况下的调用方式  
        Test1.main(new String[]{"abc","efg"});  
          
        //程序运行时候传递的第一个参数 我们人为是类的名字  
        String m = args[0];  
        Method mainMethod = Class.forName(m).getMethod("main",String[].class) ;  
//      mainMethod.invoke(null,new String[]{"abc","efg"});  
        //上面的语句不能正确执行,因为Test1中的参数是需要一个String数组,但是在jdk中接收到之后将数组  
        //拆开之后再分别作为参数传递给Test1,既然它拆包我们就再包一层如下,就可以正确执行了  
        mainMethod.invoke(null, new Object[]{new String[]{"abc","efg"}});  
        //还可以使用下面的方法,  
        mainMethod.invoke(null, (Object)new String[]{"abc","efg"});  
  
    }  
  
}  
  
class Test1  
{  
    public static void main(String[] args)  
    {  
        for(String str:args )  
            System.out.println(str);  
    }  
} 

上面的程序执行的时候在Eclipse里面需要配置,在运行配置中的程序参数中需要加上Test1然后运行会出现如下的结果:

代码语言:js
复制
abc  
efg  
abc  
efg  
abc  
efg  

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档