请各位大神帮帮忙~~~谢谢了,代码运行不知道错到哪里了设计类ReflectTester,该类中有一方法copy(Objectobj),该方法能够创建一个和参数obj同样类型的对象,然后把obj对象中所有属性...
请各位大神帮帮忙~~~谢谢了,代码运行不知道错到哪里了
设计类ReflectTester,该类中有一方法copy(Object obj),该方法能够创建一个和参数obj同样类型的对象,然后把obj对象中所有属性复制到新建对象中,并将它返回。
基本要求:设计相关类完成上述功能(只要求复制简单JavaBean,且每个JavaBean的每个属性都有public类型的getXxx()和setXxx()方法)。
我写的代码如下:
public class ReflectTester {
public Object copy(Object obj)throws Exception{
Class>classType=obj.getClass();
Object reflectTester = classType.getConstructor(new Class[]{}).newInstance(new Object[]{});
Field[] fields = classType.getDeclaredFields();
for(Field field:fields){
String fieldName = field.getName();
String getMethodName = "get"+fieldName.toUpperCase();
String setMethodName = "set"+fieldName.toUpperCase();
Method getmethod = classType.getMethod(getMethodName,new Class[]{});
Method setmethod = classType.getMethod(setMethodName,field.getType());
Object price =getmethod.invoke(obj,new Object[]{});
System.out.println(fieldName+","+price);
setmethod.invoke(reflectTester, new Object[]{price});
}
return reflectTester;
}
public static void main(String[] args)throws Exception {
Product product = new Product("百年孤独",51.20f);
Product reflectTester = (Product) new ReflectTester().copy(product);
System.out.println("复制后的对象输出信息:\n"+reflectTester.getName()+"\n"+reflectTester.getPrice());
}
}
public class Product {
public Product(String name,float price){
super();
this.name = name;
this.price=price;
}
public Product(){
}
private String name;
private float price;
public void setName(String name){
this.name = name;
}
public float getPrice() {
return price;
}
public String getName(){
return name;
}
}
展开