简单的JAVABEAN属性复制方法!

在J2EE框架中用到了很多JAVA EBAN,如struts 中的actionform、hibernate中的PO、VO,并在各个BEAN中复制,在struts的org.apache.commons.beanutils.BeanUtils.copyProperties方法中就可以做到BEAN的复制,下面是使用JAVA反射机制实现这一方法;

类Person

  1. package accessingprivate;
  2. public class Person {
  3.     private String name;
  4.     private String address;
  5.     int age;
  6.     public String getName() {
  7.         return name;
  8.     }
  9.     public void setName(String name) {
  10.         this.name = name;
  11.     }
  12.     public String getAddress() {
  13.         return address;
  14.     }
  15.     public void setAddress(String address) {
  16.         this.address = address;
  17.     }
  18.     public int getAge() {
  19.         return age;
  20.     }
  21.     public void setAge(int age) {
  22.         this.age = age;
  23.     }
  24. }

类People

  1. package accessingprivate;
  2. public class People {
  3.     private String name;
  4.     private int age;
  5.     private String email;
  6.     public String getName() {
  7.         return name;
  8.     }
  9.     public void setName(String name) {
  10.         this.name = name;
  11.     }
  12.     public String getEmail() {
  13.         return email;
  14.     }
  15.     public void setEmail(String email) {
  16.         this.email = email;
  17.     }
  18.     public int getAge() {
  19.         return age;
  20.     }
  21.     public void setAge(int age) {
  22.         this.age = age;
  23.     }
  24. }

 

类BeanCopy

  1. package accessingprivate;
  2. import java.lang.reflect.Field;
  3. public class BeanCopy {
  4.     /**
  5.      * @param args
  6.      */
  7.     public static void main(String[] args) {
  8.         // TODO Auto-generated method stub
  9.         Person person = new Person();
  10.         People people = new People();
  11.         person.setName("ALEX");
  12.         person.setAddress("");
  13.         person.setAge(36);
  14.         try {
  15.             copy(people,person);
  16.         } catch (Exception e) {
  17.             e.printStackTrace();
  18.         }
  19.         System.out.println(people.getName()+"-->"+people.getAge());
  20.     }
  21.     
  22.     public static void copy(Object obj,Object object) throws Exception{
  23.         Field [] fieldobject = object.getClass().getDeclaredFields();
  24.         Field [] fieldob = obj.getClass().getDeclaredFields();
  25.         
  26.         for(int i=0; i<fieldobject.length;i++){
  27.             String objectname = fieldobject[i].getName();
  28.             String objDataType = (fieldobject[i].getGenericType()).toString();
  29.             for(int j=0; j<fieldob.length;j++){
  30.                 String objname = fieldob[j].getName();
  31.                 String objectDataType = (fieldob[j].getGenericType()).toString();
  32.                 if(objname.equals(objectname)&&objDataType.equals(objectDataType)){
  33.                     fieldobject[i].setAccessible(true);
  34.                     fieldob[j].setAccessible(true);
  35.                     Object objs = fieldobject[i].get(object);
  36.                     fieldob[j].set(obj, objs);
  37.                 }
  38.             }
  39.         }
  40.     }
  41. }

 

输出结果:   ALEX-->36

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值