在某个业务环境中:(如)Aclass a = xxxxx;现在假如Aclass这个类在项目中存在,但再某个业务中动态获取到了类的名字(包含类路径:“com.van.Demo”),如何获得该类了?比如下面的方法:public void tt(String className){ [通过className获得的类] obj = xxxxx;
.........
}实际业务很复杂,只是举个简单的例子。我就想让obj前面红色部分这个类型通过字符串动态生成类型,而不是写死再这里。知道用Class.forName("className")....,后面具体方法不记得了,希望高手帮忙。
.........
}实际业务很复杂,只是举个简单的例子。我就想让obj前面红色部分这个类型通过字符串动态生成类型,而不是写死再这里。知道用Class.forName("className")....,后面具体方法不记得了,希望高手帮忙。
解决方案 »
- ScheduledThreadPoolExecutor定时问题,求高手!在线等!!!!!!
- hibernate事务提交问题~~急急急
- 救急!!请教使用过maven2的高手们!
- 求问action A 如何调用action B 中的方法?(涉及B的初始化)
- JAVA中如何实现1G左右的大文件上传和下载?
- 局域网内访问服务器tomcat问题
- JAVA 调用vc.net开发的webservice.如何操作?
- 为什么无法将证书加入cacerts,明明加入了,可是最后有显示找不到什么文件?
- 一初级问题:MVC和Struts?
- linux下的tomcat
- hibernate中的date类型绑定form表单
- Mysql中是blob类型,实体类定义为string,怎么取值
如
public void tt(String className){ //[通过className获得的类] obj = xxxxx;
Class<?> c = Class.forName(className);
Object obj = c.newInstance();
Method m = c.getDeclaredMethod(method_name, method_parameter_type);
m.setAccessible(true);
Object returnObj = m.invoke(obj, method_paramter_value);
.........
}
if (obj instanceof xxx) {
xxx x = (xxx)obj
}
String className="xxx.xxx.Aclass"; //获得相应类
Class c = Class.forName(className);
//生成一个该类的无参实例o1
Object o1 = c.newInstance(); //等价于 o = new Aclass(); //生成一个该类的有参实例o2(假设构造方法的参数类型为String,int)
Class[] cl = {Class.forName("java.lang.String"), Class.forName("java.lang.Integer")};
Constructor m = c.getConstructor(cl);
Object[] params = {"abc", 1};
Object o2 = m.newInstance(params); // 等价于 o = new Aclass("abc",1)