步骤:
创建一个User类(name,age,gender) 生成一个User类的对象 获取User类对象的Class对象 通过Class对象创建一个目标对象 通过Class对象获取User类的get,set方法 用源对象的get方法获取到的属性值赋给目标对象的set方法
public class CopyTest {
public static void main ( String[ ] args) {
User u1 = new User ( "张三" , 22 , "男" ) ;
System. out. println ( "源对象的值为: " + user. toString ( ) ) ;
try {
User u2 = ( User) copy ( u1) ;
System. out. println ( "拷贝后的对象的值为:" + u2. toString ( ) ) ;
} catch ( Exception e) {
e. printStackTrace ( ) ;
}
}
public static Object copy ( Object obj) throws Exception{
Class< ? > clazz = obj. getClass ( ) ;
Object u2 = clazz. newInstance ( ) ;
Field[ ] field = clazz. getDeclaredFields ( ) ;
for ( Field f : field) {
String name = f. getName ( ) ;
String first = name. substring ( 0 , 1 ) . toUpperCase ( ) ;
String getMethodName = "get" + first + name. substring ( 1 ) ;
String setMethodName = "set" + first + name. substring ( 1 ) ;
Method getMethod = clazz. getDeclaredMethod ( getMethodName) ;
Object value = getMethod. invoke ( obj) ;
Method setMethod = clazz. getDeclaredMethod ( setMethodName, f. getType ( ) ) ;
setMethod. invoke ( u2, value) ;
}
return u1;
}
}
结果
源对象的值为: User{ name= '张三' , age= 22 , gender= '男' }
拷贝后的对象的值为:User{ name= '张三' , age= 22 , gender= '男' }