繁体中文
设为首页
加入收藏
当前位置: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 main...

一直都在连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
相关文章