Code Bye

Java反射,Int和Integet类型设置不成功,String可以设置

 

为什么我使用setXXX方法设置Int,Integer类型参数,不成功?哪位大侠来帮小弟一把!
代码:
/**
 * 封装方法,用来获取javaBean内的每一个字段的set方法
 * @param field 字段名称
 * @param cla 对象的Class实例
 * @param newObj 实体类的对象
 * @param result 设置值的内容
 * @return Object
 */
public void invokeMethod_set(Field field,Class<? extends Object> cla,Object newObj,Object result){
try{
//获取属性的名称并取出首字母,将其转化为大写
String firstName = field.getName().substring(0,1).toUpperCase();
//将属性的名称转化为标准格式的方法名称getXxx
String mname =”set”+firstName + field.getName().substring(1);
System.out.println(mname+”  “+field.getType());
//获取实体类中的get方法名称
Method metodName = cla.getMethod(mname, field.getType());
System.out.println(“值:”+result);
//执行方法
metodName.invoke(newObj, result);
}catch(Exception e){
logger.error(e);
}
}

/**
 * 查询
 * @param obj 传入实体类的对象
 */
public List<?> find(Object obj) {
List<Object> list= new ArrayList<Object>();
try{
Class<? extends Object> cla = obj.getClass();
Object tableName = invokeMethod(cla.getDeclaredField(“tableName”), cla, obj);
Field fields[] = cla.getDeclaredFields();

ResultSet rs = getStatement().executeQuery(” Select * from  “+tableName);
while(rs.next()){
//创建一个新的类型
Object newObj = cla.newInstance();
for (int i = 1; i < fields.length; i++) {
//System.out.println(rs.getObject(i));
//设置属性的值
invokeMethod_set(fields[i], cla, newObj,rs.getObject(i));
}
System.out.println(“…..”);
//把新创建的类存放到list内
list.add(newObj);
}
}catch(Exception e){
e.printStackTrace();
logger.error(e);
}
return list;
}

输出集合内容:
List<ProductTypeParent> list = (List<ProductTypeParent>)idao.find(new ProductTypeParent());
for (int i = 0; i < list.size(); i++) {
ProductTypeParent pTypeParent = list.get(i);
System.out.println(pTypeParent.getEpp_id()+”  “+pTypeParent.getEpp_name());
}
结果:

null  图书音像
null  百货
null  服装
null  数码


20分
只能debug看看调用metodName.invoke(newObj, result);之前result是什么
在调用之后可以打印field.get(newObj)看看是否设置正确
这个我也想到了,result打印正确!field.get(newObj)为null

20分
 把 你的代码多给出来吧。。你这里实体也没给。
不好意思,各位这几天没有回帖!我的问题解决了。。。谢谢各位了
楼主,你最后是怎么解决的?????求解阿,帮帮小弟,我刚毕业的菜鸟

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Java反射,Int和Integet类型设置不成功,String可以设置