java reflect实现dto间相同字段copy例

import  java.lang.reflect.Field;
import  java.lang.reflect.InvocationTargetException;
import  java.lang.reflect.Method;


public   class  myCopyTest {

    
/**
     * 
@param  args
     
*/
    
public   static   void  main(String[] args) {
        
//  TODO Auto-generated method stub

        copyTestA copyA 
=   new  copyTestA();
        copyTestB copyB 
=   new  copyTestB();
        
        copyA.setJyouhou(
" testyong " );
        myCopyProperties(copyA, copyB);
        
        System.out.println(copyB.getJyouhou());
    }
    
    
public   static   void  myCopyProperties(Object objectA, Object objectB) {
        
        Field[] fields 
=  objectA.getClass().getDeclaredFields();
        
        Method methodA 
=   null ;
        Method methodB 
=   null ;
        
        String methodAName 
=   null ;
        String methodBName 
=   null ;
        
        
for  (Field field : fields) {
            
            String name 
=  field.getName();
            
int  length  =  name.length();
            
            methodAName 
=   new  StringBuffer( " get " ).
            append(name.substring(
0 , 1 ).toUpperCase()).
            append(name.substring(
1 ,length)).toString();
            
            methodBName 
=   new  StringBuffer( " set " ).
            append(name.substring(
0 , 1 ).toUpperCase()).
            append(name.substring(
1 ,length)).toString();

            
try  {
                methodA 
=  objectA.getClass().getDeclaredMethod(methodAName);
                
                methodB 
=  objectB.getClass().getDeclaredMethod(
                        methodBName, Class.forName(
" java.lang.String " ));
                
                String methodBParam 
=  (String)methodA.invoke(objectA);
                
                methodB.invoke(objectB, methodBParam);
                
            } 
catch  (SecurityException e) {
                
//  TODO Auto-generated catch block
                e.printStackTrace();
            } 
catch  (NoSuchMethodException e) {
                
//  TODO Auto-generated catch block
                e.printStackTrace();
            } 
catch  (ClassNotFoundException e) {
                
//  TODO Auto-generated catch block
                e.printStackTrace();
            } 
catch  (IllegalArgumentException e) {
                
//  TODO Auto-generated catch block
                e.printStackTrace();
            } 
catch  (IllegalAccessException e) {
                
//  TODO Auto-generated catch block
                e.printStackTrace();
            } 
catch  (InvocationTargetException e) {
                
//  TODO Auto-generated catch block
                e.printStackTrace();
            }         
        }      
    }
}

转载于:https://www.cnblogs.com/fishren/archive/2011/05/13/2045040.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值