根据指定方法的参数去构造一个新的对象的拷贝并将他返回
来源:互联网 发布:期货交易软件分析决策 编辑:程序博客网 时间:2024/04/27 23:21
**
* 根据指定方法的参数去构造一个新的对象的拷贝并将他返回
* @param obj 原始对象
* @return 新对象
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws SecurityException
* @throws IllegalArgumentException
*/
@SuppressWarnings("unchecked")
public static Object copy(Object obj) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException,
InvocationTargetException, NoSuchMethodException
{
//获得对象的类型
Class classType = obj.getClass();
//通过默认构造方法去创建一个新的对象,getConstructor的视其参数决定调用哪个构造方法
Object objectCopy = classType.getConstructor(new Class[]{}).newInstance(new Object[]{});
//获得对象的所有属性
Field[] fields = classType.getDeclaredFields();
for(int i = 0; i < fields.length; i++)
{
//获取数组中对应的属性
Field field = fields[i];
String fieldName = field.getName();
String stringLetter = fieldName.substring(0, 1).toUpperCase();
//获得相应属性的getXXX和setXXX方法名称
String getName = "get" + stringLetter + fieldName.substring(1);
String setName = "set" + stringLetter + fieldName.substring(1);
//获取相应的方法
Method getMethod = classType.getMethod(getName, new Class[]{});
Method setMethod = classType.getMethod(setName, new Class[]{field.getType()});
//调用源对象的getXXX()方法
Object value = getMethod.invoke(obj, new Object[]{});
//调用拷贝对象的setXXX()方法
setMethod.invoke(objectCopy, new Object[]{value});
}
return objectCopy;
}
- 根据指定方法的参数去构造一个新的对象的拷贝并将他返回
- 给Array本地对象增加一个原型方法,他的用途是删除数组中重复的条目,并将新的数组返回
- 拷贝构造函数,用一个对象的值初始化一个新构造的对象
- 写一个方法获取 url ?后面的参数,并将参数对象化。
- c++是如何处理 对象 作为返回值 和 输入参数的 -- 拷贝构造
- 将DataRow转成指定类型的类,并返回这个类的对象(带值)
- 将DataRow转成指定类型的类,并返回这个类的对象(带值)
- 将DataRow转成指定类型的类,并返回这个类的对象(带值)
- 将DataRow转成指定类型的类,并返回这个类的对象(带值)
- 返回临时对象时的拷贝构造函数问题
- 函数返回类的对象与拷贝构造函数
- 将普通sql查询的将结果集转换指定的对象,然后对象存在list中并返回
- 新new 的一个对象不对它进行任何操作,直接返回,将返回什么?
- AS3 深度拷贝对象的构造函数带参数
- 取得request对象中所有的参数值并生成一个相应的对象返回
- 将多级目录的文件拷贝到一个指定目录
- 将多级目录的文件拷贝到一个指定目录
- Javascript 将数组按要求分割,并返回一个新的数组
- 正则表达式用于字符串处理
- 串口驱动
- 从指定的字符串中提取Email
- 连接SQL数据库的方法
- 首届“创新管理在职博士班”学员推荐报名工作启动
- 根据指定方法的参数去构造一个新的对象的拷贝并将他返回
- 日期公用处理类
- 公交换乘一站算法
- 开源Web报表制作工具OpenReports3.0简介
- Win32平台下的微软C编译器(cl.exe for 80×86)的对齐策略
- 中国靠什么培养创新人才
- PHP权限控制系统-PHPGACL
- BULK INSERT
- 将一个student.txt文件的数据导入MySQL数据库中一张student1表中