首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

用反照机制调用类的main方法

2013-10-13 
用反射机制调用类的main方法运用反射机制来调用类的main方法,在一些框架当中经常用到。我们只需要将一个类

用反射机制调用类的main方法

运用反射机制来调用类的main方法,在一些框架当中经常用到。我们只需要将一个类的全名(即要包括包名)配置到配置文件当中。

我们知道main方法的参数是一个String类型的数组,那么在反射当中应该要注意这个地方。代码中有详解。

?

MainClass.java

package com.cloud.reflect;public class MainClass {public static void main(String[] args) {for (String arg : args) {System.out.println(arg);}}}

?

MainTest.java

package com.cloud.reflect;import java.io.InputStream;import java.lang.reflect.Method;import java.util.Properties;public class MainTest {public static void main(String[] args) throws Exception {//用类加载器加载配置文件InputStream in = MainTest.class.getResourceAsStream("config.properties");Properties props = new Properties();props.load(in);//关闭IO流in.close();String className = props.getProperty("className");Method mainMethod = Class.forName(className).getMethod("main", String[].class);//由于main方法是静态方法,所以第一个参数为null, 由于main方法只接收一个字符串数组的参数,//如果你的第二参数是new String[]{"chris", "cloud"}这种形式的话,会报错的。因为//JDK会认为你传了两个String类型的参数,为此解决方案有两种,推荐用第一种。//第一种方案:mainMethod.invoke(null, (Object) new String[]{"chris", "cloud"});//第二种方案:mainMethod.invoke(null, new Object[]{new String[]{"chris", "cloud"}});}}

?

config.properties

className=com.cloud.reflect.MainClass

?

热点排行