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  数码
------解决方案--------------------
只能debug看看调用metodName.invoke(newObj, result);之前result是什么
在调用之后可以打印field.get(newObj)看看是否设置正确
------解决方案--------------------
 把 你的代码多给出来吧。。你这里实体也没给。