public static void main(String args[]) {
User u = new User();
method1(u,User.class);
method2(u,"User");
}public static void method1(Object o, Class cl) {
//根据cl可以将o转换为User对象吗?
}
public static void method2(Object o, String className) {
//根据className可以将o转换为User对象吗?
}
解决方案 »
- 谁有java编程思想最好中文版的
- 关于Visual VM的远程监控
- 高分求JSF的表格解决方案!!
- 关于一个静态变量的问题
- STRING的一些问题
- ¥¥¥连接池(connection pool)技术中,用DataSource和Driver有什么区别?¥¥¥¥
- 大家一起学习RMI
- 如何使微软的IIS支持服务器端的JSP Servlet?
- 用这个程序取random随机值,得到的结果为什么会是0??
- 在浏览器中的Applet的源代码,放在那里了(Windows2000)。急,急急急
- 求教:如果将一个string日期(2010-02-01)的格式表示成01-Jan-2010
- 什么是sql 2005的驱动程序啊 ,怎么jdbc安装驱动程序?
public static void method2(Object o, String className) {
//根据className可以将o转换为User对象吗?
try {
Class c = Class.forName(className);
method1(o,c);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
这个问题我就不明白了
用处一:
现假设方法变为:
public static method1(User u, Class cl) {
//
}
那么,在method1(u, User.class)中我可以用反射调用u对象里的所有以get开头的方法,然后将得到的不为空的
值拼成insert 或 update的sql串。当然你会说用hibernate就可以了,但这里需要得到sql语句,然后保存起来。
现在问题是,我想做得灵活些,将参数1改为Object的然后转成真实对象。
反射运行是运行期。哪怕编译期的类型是Object,只要它真的是User或其子类,你照样能调用其属性方法。何须把编译期的类型给转了。