程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 一個用Class.forName()做的動態裝載小東東,有助於理解Class.forName()的應用

一個用Class.forName()做的動態裝載小東東,有助於理解Class.forName()的應用

編輯:關於JAVA

一直都在連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又給它傳了三個參數:)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved