属性填充 ( 懒人版)

主要类先上

package  myUtil;

import  java.lang.reflect.InvocationTargetException;
import  java.lang.reflect.Method;
import  java.util.Enumeration;
import  java.util.Hashtable;
import  java.util.Map;
import  java.util.Vector;

public   class  CopyAttribute  {
    
public   static   void  copy(Object bn1,Object bn2)  throws  Exception {
        Hashtable m1 
=   new  Hashtable();
        Hashtable m2 
=   new  Hashtable();
        
        
// 取出 类 一 的 set 方法
        Method[] me1  =   bn1.getClass().getMethods() ;
        
for ( int  i = 0 ;i < me1.length;i ++ ) {
            String name 
=  me1[i].getName() ;
            
if ( name.indexOf( " set " ) == 0  ) {
                String Att 
=  (name.substring( 3 ,name.length())).toUpperCase();
                m1.put(Att,me1[i]);
            }

        }

        
        
//     取出 类 二 的 get 方法
        Method[] me2  =   bn2.getClass().getMethods() ;
        
for ( int  i = 0 ;i < me2.length;i ++ ) {
            String name 
=  me2[i].getName() ;
            
if ( name.indexOf( " get " ) == 0  ) {
                String Att 
=  (name.substring( 3 ,name.length())).toUpperCase();
                m2.put(Att,me2[i]);
            }

        }

        
        Enumeration en2 
=   m2.keys();
        Enumeration en1 
=   m1.keys();
        
        
while (en2.hasMoreElements()) {
            String Att 
=  (String)en2.nextElement();
            Method get 
=  (Method)m2.get(Att);
            Method set 
=  (Method)m1.get(Att);
            
            
if (set == null ) continue ;
            
            set.invoke(bn1,
new  Object[] { get.invoke(bn2, new  Object[] {} ) } );
        }

        
    }

}




运行
} package  test;

import  myUtil.CopyAttribute;
import  Bean.Bean1;
import  Bean.Bean2;
import  junit.framework.TestCase;

public   class  test  extends  TestCase  {

    
protected void setUp() throws Exception {
        
super.setUp();
    }


    
protected void tearDown() throws Exception {
        
super.tearDown();
    }

    
    
public void testMyCopy() throws Exception{
        
        Bean1 b1 
= new Bean1();
        b1.setAvg(
23);
        b1.setName(
"liukaiyi");
        
        Bean2 b2 
= new Bean2();
        b2.setName(null);
        CopyAttribute.copy(b2,b1);
        
        assertNotNull(b2.getName());

   }
}


你可能感兴趣的:(属性填充 ( 懒人版))