如题所述
说一个大概思路吧:
1.读取数据:从数据库中读取数据的同时,拿到元数据,即metadata;
2.实例化:通过类名,利用反射 实例你的实体类(类名可以和表名保持一致,这样就不用写额外的
映射了),如果你只是想通过反射赋值的话,你也可以直接new个类;
3.方法调用:通过元数据,利用反射 得到你的set方法(方法名可以和字段名保持一致,否则你要写
出映射关系);追问
Method chap = testBean.class.getDeclaredMethod("setS1",String.class);
//同理,你要把值传给set方法
Object obj1 = chap.invoke(sod,"小米手机");
1.读取数据:从数据库中读取数据的同时,拿到元数据,即metadata;
2.实例化:通过类名,利用反射 实例你的实体类(类名可以和表名保持一致,这样就不用写额外的
映射了),如果你只是想通过反射赋值的话,你也可以直接new个类;
3.方法调用:通过元数据,利用反射 得到你的set方法(方法名可以和字段名保持一致,否则你要写
出映射关系);追问
为什么直接过去get方法可以,过去set时报错怎么办。。
追答可否把错误信息贴出来
兄弟,我看你的问题很眼熟,你是不是在百度知道问过好几次反射的问题呀,另外,我猜你用的是小米手机 ^^
连手机都可以猜到,大哥不要黑我呀,我是个苦逼的程序猿。。
争取帮你搞定
把你的testBean这个类的源码贴出来,尤其是set方法这块儿
字段就是private类型的所以才建的get和set方法
你的用法有问题,这样写
//因为你的set方法是有参数的,这里要写上参数类型Method chap = testBean.class.getDeclaredMethod("setS1",String.class);
//同理,你要把值传给set方法
Object obj1 = chap.invoke(sod,"小米手机");
温馨提示:答案为网友推荐,仅供参考
第1个回答 2015-01-15
so esay
String path="com.wm.model.User";
Class clazz = class.forName(path);
User a=(User)clazz.new.newinstance(); //User类一定要有个无参构造函数
Method a = clazz.getMethod("SetName", String.class);
a.invoke(a,"张三");
这样就把值传到name里了追问
String path="com.wm.model.User";
Class clazz = class.forName(path);
User a=(User)clazz.new.newinstance(); //User类一定要有个无参构造函数
Method a = clazz.getMethod("SetName", String.class);
a.invoke(a,"张三");
这样就把值传到name里了追问
哥哥clazz.new.newinstance()是什么。。
我这个复制过来报错!