public Object copyBean(Object source) throws Exception{
String getMethodName = "";
String setMethodName = "";
Method getMethod = null;
Method setMethod = null;
Class<? extends Object> sClass = source.getClass();
//用对象类型创建对象并获得对象的一个拷贝
Object destination = sClass.getConstructor(new Class[]{}).newInstance(new Object[]{}) ;
Class<? extends Object> dClass = destination.getClass();
Field[] fields = sClass.getDeclaredFields();
for(int i = 0; i < fields.length; i++){
getMethodName = "get" + fields[i].getName().substring(0,1).toUpperCase() + fields[i].getName().substring(1);
setMethodName = "set" + fields[i].getName().substring(0,1).toUpperCase() + fields[i].getName().substring(1);
getMethod = sClass.getMethod(getMethodName, new Class[]{});
setMethod = dClass.getMethod(setMethodName, new Class[]{fields[i].getType()});
Object value = getMethod.invoke(source, new Object[]{});
setMethod.invoke(destination, new Object[] {value});
}
return destination;
}
分享到:
相关推荐
标题 "Cannot invoke setId on bean class 'class ' - argument type mismatch - had object" 描述的是一个在使用Spring框架或者类似的依赖注入容器时常见的错误。这个错误通常发生在尝试通过容器设置一个对象属性,...
map.put(key, method.invoke(bean)); } } return map; } } ``` 这段代码通过遍历Java Bean类的所有getter方法,获取属性名和对应的值,并存入Map中。 反过来,从Map转换为Java Bean的过程可以使用Java的构造器...
P/Invoke Interop Assistant是一个非常实用的工具,它专门用于帮助C#或VB.NET开发者将C或C++的函数和数据类型转换为.NET Framework兼容的形式。这个工具的主要目的是解决跨语言互操作性问题,即所谓的“平台调用”...
### C#窗体中Invoke和BeginInvoke方法详解 在探讨C#窗体中`Invoke`和`BeginInvoke`方法的使用及其重要性之前,我们首先需要理解.NET框架下的多线程与GUI操作的基本原则,以及为何这两者在跨线程更新GUI时不可或缺。...
在C#编程中,`Invoke`是一个非常关键的概念,尤其在多线程编程中发挥着重要作用。`Invoke`主要用于更新UI(用户界面)控件,因为UI控件通常不是线程安全的,也就是说,它们只能在创建它们的线程中进行修改。这个特性...
在Windows Forms或WPF等UI环境中,由于UI元素(如控件)只能在其创建的线程(即UI线程)中进行修改,因此,当需要在后台线程更新UI时,`Invoke`和`BeginInvoke`就显得尤为重要。这两个方法都是`Control`类的成员,...
《P/Invoke.NET工具详解:实现托管代码与非托管代码的无缝交互》 在软件开发过程中,有时我们需要在.NET Framework的托管代码环境中调用非托管的C/C++库或者WinAPI函数,这时就需要借助P/Invoke(Platform Invoke)...
P/Invoke Interop Assistant,它支持托管代码和非托管代码之间的方法签名的转换,而且直接生成相关的C#或者是VB的方法调用代码。这个签名的转换,不只是适用于Windows的方法签名,只要给定一个C头文件,就可以转换...
Ivoke-WCMDump 什么是Credential Manager ...从Credential Manager导出Windows凭据的Powershell脚本 https://github.com/peewpw/Invoke-WCMDump PS>Import-Module .\Invoke-WCMDump.ps1 ...Invoke-WCMDump
《Python库Invoke 0.11.0深度解析》 在Python的世界里,库是开发者的重要工具,它们提供了丰富的功能,极大地提高了开发效率。今天我们要深入探讨的是一个名为`invoke`的库,版本号为0.11.0,它是一个强大的任务...
### Invoke与BeginInvoke的区别 #### 一、基本概念 在.NET框架中,`Invoke` 和 `BeginInvoke` 是两个常用的方法,主要用于实现跨线程访问控件或执行操作。这两种方法通常出现在多线程编程场景中,特别是当涉及到UI...
《P/Invoke Interop Assistant:跨语言互操作的利器》 在.NET框架中,与非托管代码(如C++编写的动态链接库DLL)交互是一个常见的需求,这就是P/Invoke(Platform Invoke)技术的用武之地。P/Invoke Interop ...
【Invoke反射】是一种在.NET框架中使用的重要编程技术,它属于C#或.NET中的动态编程范畴,主要基于System.Reflection命名空间。反射允许程序在运行时检查自身的信息,并且能够动态地创建对象、调用方法、访问属性和...
AutoCAD .NET ARX Invoke是AutoCAD开发中的一个重要概念,主要涉及到使用.NET Framework与AutoCAD的ARX(Acad Runtime Extension)应用程序之间的交互。在AutoCAD的开发环境中,.NET和ARX是两种不同的扩展机制,前者...
本文将深入探讨委托的使用,特别是`Delegate`的`Invoke`方法,以及如何在实际编程中应用这些概念。 首先,让我们了解什么是委托。在C#中,委托是一种引用类型,它定义了一种方法签名,也就是说,它规定了可以关联到...
就Invoke和BeginInvoke进行对比介绍,穿插了一些例子在里面
Invoke 是简单的 Python 系统任务执行程序。示例:from invoke import run, task @task def clean(docs=False, bytecode=False, extra=''): patterns = ['build'] if docs: patterns.append('docs/_...
socket 源码程序 包含socket服务端 ,客户端,通过 Networkstream 流 streamReader /streamWriter进行动态获取写入信息。并且使用 委托 invoke ==
首先,使用`Method`对象的`setAccessible(true)`使私有方法可访问,然后调用`invoke()`方法执行setter。 4. **获取Bean的属性值**:对于Bean到Map的转换,遍历Bean的字段,调用getter方法获取属性值,并将其添加到...