標籤:tcl public 方法 highlight string etc ted ati nbsp
以擷取Hello.class為例
public class Hello { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("tes22t2"); for (String arg : args) { System.out.println("hello proms:" + arg); } }}
1.反射
public static void main(String[] args) throws Exception { args = new String[]{"Hello","java瘋狂講義w"}; String progClass = args[0]; String[] progArgs = new String[args.length-1]; System.arraycopy(args , 1 , progArgs, 0 , progArgs.length);// URL[] urls = {new URL("file:")};// Class<?> clazz = (new URLClassLoader(urls)).loadClass(progClass); Class<?> clazz = Class.forName(progClass); // 擷取需要啟動並執行類的主方法 Method main = clazz.getMethod("main" , (new String[0]).getClass()); Object[] argsArray = {progArgs}; main.invoke(null,argsArray); }
2.URLClassLoader
URL[] urls = {new URL("file:")};Class<?> clazz = (new URLClassLoader(urls)).loadClass(progClass);
3.loadClass
CompileClassLoader ccl = new CompileClassLoader();// 載入需要啟動並執行類Class<?> clazz = ccl.loadClass(progClass);
4.覆寫findClass
參考
java8--類載入機制與反射(java瘋狂講義3複習筆記)
java擷取class的幾種方式