java反射调用属性的set方法时,若属性为int类型,会出错,设置通过get得到的值的getClass为Integer。

publicObjectcopy(Objectobject)throwsException{Class<?>classType=object.getClass();Con... public Object copy(Object object)throws Exception{
Class<?> classType=object.getClass();
Constructor<?> constructor=classType.getConstructor(new Class[]{});
Customer obj=(Customer)constructor.newInstance(new Object[]{});
System.out.println(obj);
Field[] fields=classType.getDeclaredFields();
for(Field field:fields){
String fieldName=field.getName();
//将属性名首字母转换成大写字母
String firstLetter=fieldName.substring(0, 1).toUpperCase();
//获取属性(field)对应get方法名称
String getMethodName="get"+firstLetter+fieldName.substring(1);
System.out.println("getMethodName:"+getMethodName);
//获取属性(field)对应set方法名称
String setMethodName="set"+firstLetter+fieldName.substring(1);
System.out.println("setMethodName:"+setMethodName);
//通过get方法名称获取属性(field)对应get方法
Method getMethod=classType.getMethod(getMethodName,new Class[]{});
Object value=getMethod.invoke(object, new Object[]{});
//通过set方法名称获取属性(field)对应set方法
System.out.println("value:"+value.getClass());
Method setMethod=classType.getMethod(setMethodName,new Class[]{value.getClass()});
setMethod.invoke(obj, new Object[]{value});
}
return obj;
}

age为int类型,value.getClass() 得到java.lang.Integer,请问如何修改
展开
 我来答
养初厹06
2012-08-03 · TA获得超过203个赞
知道小有建树答主
回答量:784
采纳率:0%
帮助的人:413万
展开全部
Integer可以直接转成int的啊,int是基本类型,去不是继承于object,而integer是类才能用getclass方法。获得之后能够转成int型
追问
有很多个属性,并不是只有那一个,怎么转啊?
追答
你应该知道你被反射的类的信息啊,转成相对应的实体的那个类型被
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式