和该文环境一样http://blog.csdn.net/fjssharpsword/article/details/64922083
不同的是,在load出的class调用具体方法时传递参数。
1、User.class代码
package cn.fjs;
public class User {
public void say(String name){
System.out.println(name);
}
}
2、DynamicClassLoaderTest代码
package cn.fjs;
import java.util.List;
import java.util.Map;
import cn.fjs.DynamicClassLoader;
import cn.fjs.DynamicDom;
public class DynamicClassLoaderTest {
public static void main(String[] args) {
DynamicDom dmo = new DynamicDom();//xml文件解析类
Map<String, List<String>> classes;
//重载ClassLoader类
DynamicClassLoader loader = new DynamicClassLoader(new String[]{"D:\\tmp\\"});
try {
classes = dmo.getMethods("D:\\tmp\\a.xml");
for(String key:classes.keySet()){
for(String clazz : classes.get(key)){
Class<?> c =loader.findClass(key);//类名字
//c.getMethod(clazz).invoke(c.newInstance());//方法名字
c.getMethod(clazz,String.class).invoke(c.newInstance(),"fjs");//带参数
}
}
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}