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,请问如何修改 展开
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,请问如何修改 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询