java反射经典题目_java反射实验题

请各位大神帮帮忙~~~谢谢了,代码运行不知道错到哪里了设计类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;

}

}

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值