一直都在连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<args.length;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<method.length;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<args.length;i++){
system.out.println(“echo arg”+i+” = “+args[i]);
}
}
}
都编译之后
java dynamicloader echo one two there
就可以看到效果了,既动态载入echo又给它传了三个参数:)
一个用Class.forName()做的动态装载小东东,有助于理解Class.forName()的应用-JSP教程,Java基础
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 一个用Class.forName()做的动态装载小东东,有助于理解Class.forName()的应用-JSP教程,Java基础
相关推荐
- 暂无文章
