Java 利用反射获取类的属性与方法

public static Payv2PayOrder turnToOrder(Payv2PayOrderOld old){
Payv2PayOrder order = new Payv2PayOrder();
// 利用反射获取order的所有属性
// 利用反射获取order_old的所有属性
try {
Field[] orderFile = order.getClass().getDeclaredFields();
Field[] oldFile = old.getClass().getDeclaredFields();
String orderName = null;
String oldName = null;
for(Field file : orderFile){
orderName = file.getName();
orderName = orderName.substring(0, 1).toUpperCase() + orderName.substring(1);
String type = file.getGenericType().toString();
if(!"SerialVersionUID".equals(orderName)){
for(Field file1 : oldFile){
oldName = file1.getName();
oldName = oldName.substring(0, 1).toUpperCase() + oldName.substring(1);
// 若属性值相同,将order_old的值赋予order
if(orderName.equals(oldName)){
Method get = old.getClass().getMethod("get" + oldName);
if (type.equals("class java.lang.Long")) {
Method set = order.getClass().getMethod("set"+orderName,Long.class);
set.invoke(order, get.invoke(old));
break;
}
if (type.equals("class java.lang.String")) {
Method set = order.getClass().getMethod("set"+orderName,String.class);
set.invoke(order, get.invoke(old));
break;
}
if (type.equals("class java.lang.Integer")) {
Method set = order.getClass().getMethod("set"+orderName,Integer.class);
set.invoke(order, get.invoke(old));
break;
}
if (type.equals("class java.lang.Double")) {
Method set = order.getClass().getMethod("set"+orderName,Double.class);
set.invoke(order, get.invoke(old));
break;
}
if (type.equals("class java.util.Date")) {
Method set = order.getClass().getMethod("set"+orderName,Date.class);
set.invoke(order, get.invoke(old));
break;
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
return order;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值