繁体中文
设为首页
加入收藏
当前位置:JSP技术首页 >> 资料/其它 >> 一个用Class.forName()做的动态装载小东东,有助于理解Class.forName()的应用,希望可

一个用Class.forName()做的动态装载小东东,有助于理解Class.forName()的应用,希望可

2005-02-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:一直都在连JDBC中用到Class.forName(),当用到XML动态解析分派的时候遇到了Class名字符串无法作为Class名实例化的问题,寻寻觅觅终于找到一个解决的办法: public class DynamicLoader{ ????public static void ...

一直都在连JDBC中用到Class.forName(),当用到XML动态解析分派的时候遇到了Class名字符串无法作为Class名实例化的问题,寻寻觅觅终于找到一个解决的办法:

public class DynamicLoader{

????public static void main(String args[]) throws Exception{

????????Class toRun = Class.forName(args[0]);

????????String[] newArgs=scrubArgs(args);

????????Method mainMethod = findMain(toRun);

????????mainMethod.invoke(null,new Object[]{newArgs});

????}

????private static String[] scruArgs(String[],args){

????????String[] toReturn = new String[args.length-1];

????????for(int i=0;i

??????????????toReturn[i-1]=args[i].toLowerCase();

?????????}

????????return toReturn;

????}

????private static Method findMain(Class clazz) throw Exception{

????????Method[] method = class.getMethods();

????????for(int i=0;i

???????????if(method[i].getName().equals("main"))

???????????????return method[i];

????????}

????????return null;

}

}

再来个简单的测试程序:

public class Echoit{

??????public static void main(String args[]){

??????????????for(int i=0;i

?????????????????System.out.println("Echo arg"+i+" = "+args[i]);

????????????????}

???????????}

}

都编译之后

java DynamicLoader Echo ONE TWO THERE

就可以看到效果了,既动态载入Echo又给它传了三个参数:)

责任编辑:admin
相关文章