用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

java 利用反射复制对象

2015-01-27 作者: java源代码大全举报

[java]代码库

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

public class Test {
    public Object copy(Object obj) throws Exception {
        //得到要复制对象的类型
        Class calssType = obj.getClass();
        //创建一个实例
        Object objCopy = calssType.getConstructor(new Class[] {}).newInstance(new Class[] {});
        //获取声明的方法
        Field[] fields = calssType.getDeclaredFields();
        //遍历字段
        for (Field f : fields) {
            //获取字段名
            String fieldName = f.getName();
            //生成get和set方法
            String midLetter = fieldName.substring(0, 1).toUpperCase();
            Method getMethod = calssType.getMethod("get" + midLetter + fieldName.substring(1), new Class[] {});
            Method setMethod = calssType.getMethod("set" + midLetter + fieldName.substring(1), new Class[] { f.getType() });
            //调用get和set方法
            Object value = getMethod.invoke(obj, new Object[] {});
            setMethod.invoke(objCopy, new Object[] { value });
        }
        //返回对象
        return objCopy;
    }

    public static void main(String[] args) throws Exception {
        Customer c = new Customer();
        c.setUserName("qinying");
        c.setAge(27);
        //复制一个新的对象
        Customer c2 = (Customer) new Test().copy(c);
        System.out.println(c2.getUserName());
        System.out.println(c2.getAge());
    }

}

class Customer {

    public Customer() {
    }

    private String userName;
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}

//源代码片段来自云代码http://yuncode.net
			


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...