Java运行时动态加载类之ClassLoader方法带参数
2017-03-23 11:07
597 查看
和该文环境一样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();
}
}
}
不同的是,在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();
}
}
}
相关文章推荐
- java动态加载jar包,并运行其中的类和方法
- java动态加载jar包,并运行其中的类和方法
- java动态加载jar包,并运行其中的类和方法
- java动态加载(将java类名、方法、方法参数当做参数传递,执行方法)
- java动态加载jar包,并运行其中的类和方法
- Java运行时动态生成class的方法
- C#,动态加载DLL,通过反射,调用参数,方法,窗体
- linux下java虚拟机加载classloader动态类方法
- JSP表格模板升级-- 用Java反射动态指定方法和参数 .
- [Java]利用反射机制动态加载并创建包含参数的对象
- Android程序运行中动态加载Lib的方法(二)
- 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】
- Java运行期间动态确定调用方法的本质
- java 动态编译.java文件,然后动态加载运行
- Launcher中动态加载APK出现java.lang.SecurityException异常的解决方法(二)
- JAVA反射--动态加载类--获取方法信息--获取成员变量构造函数信息
- Java方法的静态绑定与动态绑定讲解(向上转型的运行机制详解)
- Java 动态加载class 并反射调用方法
- Java中动态加载properties文件,而不需要重启应用的解决方法
- VB 生成exe后,动态加载窗体的show事件会出现运行时错误5的解决方法