我是靠谱客的博主 魁梧大炮,最近开发中收集的这篇文章主要介绍java克隆反射_2018.5.11 Java利用反射实现对象克隆,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

package com.lanqiao.demo;

/**

* 创建人

* @author qichunlin

*

*/

public class Person {

private int id;

private String name;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

//有参构造方法

public Person(String name,int id) {

super();

this.id = id;

this.name = name;

}

//无参构造方法

public Person() {

super();

// TODO Auto-generated constructor stub

}

}

package com.lanqiao.demo;

/**

* 复制对象

* @author qichunlin

*

*/

import java.lang.reflect.Constructor;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

public class ReflectPerson {

public Object copy(Object object) throws Exception{

//加载类

Class c = object.getClass();

//获取类中的构造方法

Constructor ct = c.getConstructor(new Class[] {});

//在构造方法中传值

Object obj = ct.newInstance(new Object[] {});

//获取所有 属性 返回数组

Field[] f = c.getDeclaredFields();

for(Field field : f) {

String name = field.getName();

//System.out.println("a"+name);

//截取

String firstLetter = name.substring(0, 1).toUpperCase();

String getMethodName = "get"+firstLetter+name.substring(1);

String setMethodName = "set"+firstLetter+name.substring(1);

//获取无参构造方法

Method getMethod = c.getMethod(getMethodName, new Class[] {});

Method setMethod = c.getMethod(setMethodName, new Class[] {field.getType()});

//执行赋值无参构造方法

Object value = getMethod.invoke(object, new Object[] {});

System.out.println(value);

//执行赋值有参构造方法

setMethod.invoke(obj, new Object[] {value});

}

return obj;

}

}

package com.lanqiao.demo;

import java.lang.reflect.InvocationTargetException;

/**

* @author qichunlin

*

*/

public class Test {

public static void main(String[] args) throws Exception,InvocationTargetException{

ReflectPerson rp = new ReflectPerson();

Person p = new Person("Legend",22);

Person obj = (Person)rp.copy(p);

System.out.println(obj.getName()+"t"+obj.getId());

}

}

最后

以上就是魁梧大炮为你收集整理的java克隆反射_2018.5.11 Java利用反射实现对象克隆的全部内容,希望文章能够帮你解决java克隆反射_2018.5.11 Java利用反射实现对象克隆所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(26)

评论列表共有 0 条评论

立即
投稿
返回
顶部