/**
* 属性复制类
*
* @param arg0
* 源Class
* @param arg1
* 目标Class
*/
public static void copyProperties(Object arg0, Object arg1)
{
Field[] fields = arg0.getClass().getDeclaredFields();
try
{
for (Field field : fields)
{
String getName = "get" + charSwitch(field.getName());
Method getMethod = arg0.getClass().getDeclaredMethod(getName);
Object obj = getMethod.invoke(arg0);
if (null != obj)
{
String setName = "set" + charSwitch(field.getName());
Method setMethod = arg1.getClass().getDeclaredMethod(
setName, obj.getClass());
setMethod.invoke(arg1, obj);
}
}
}
catch (Exception e)
{
throw new PortalRuntimeException(e.getMessage(),
PortalErrorCodes.ERROR_COPYPROPERTIES);
}
}
/**
* 属性复制类
*
* @param arg0
* 源Class
* @param arg1
* 目标Class
* @param classes
* 要过滤的类型
*/
public static void copyProperties(Object arg0, Object arg1,Class...classes)
{
Field[] fields = arg0.getClass().getDeclaredFields();
try
{
for (Field field : fields)
{
String getName = "get" + charSwitch(field.getName());
Method getMethod = arg0.getClass().getDeclaredMethod(getName);
Object obj = getMethod.invoke(arg0);
if (isClsaa(obj,classes))
{
continue;
}
if (null != obj)
{
String setName = "set" + charSwitch(field.getName());
Method setMethod = arg1.getClass().getDeclaredMethod(
setName, obj.getClass());
setMethod.invoke(arg1, obj);
}
}
}
catch (Exception e)
{
throw new PortalRuntimeException(e.getMessage(),
PortalErrorCodes.ERROR_COPYPROPERTIES);
}
}
分享到:
相关推荐
标题中的“通过构造及反射实现类属性赋值”涉及到的技术是Java的构造函数和反射机制。这两种方法在特定场景下能帮助我们更灵活、更深入地处理对象属性的复制。 首先,构造函数是创建新对象时调用的特殊方法,它可以...
本文将深入探讨这两种拷贝方式以及它们在C#中的实现方法,特别是如何使用`MemberwiseClone`、反射以及反序列化技术。 首先,浅拷贝是通过`Object.MemberwiseClone()`方法来实现的。这个方法为对象创建一个新的实例...
BeanUtil属性拷贝工具类,支持基本的javabean属性拷贝,通过java反射和泛型编程实现了list属性拷贝
- **拷贝属性值**:通过反射调用getter和setter方法,将源对象的属性值复制到目标对象相应属性。 4. **BeanUtils.cs的实现** `BeanUtils.cs`文件很可能是实现了上述功能的C#类。通常,此类会包含一个静态方法,如...
本篇文章将探讨如何利用反射技术实现POJO(Plain Old Java Object)值的拷贝,这对于数据传输、对象复制等场景非常有用。 POJO是一个简单的Java对象,没有特定的框架限制,通常包含一组属性和对应的getter/setter...
分享一个使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝 的小程序, http://blog.csdn.net/bluedoctor/article/details/8424510 是原理说明,相信请看链接文章。
深度拷贝是指创建一个新对象,这个新对象复制了原始对象的所有属性,包括嵌套的对象或集合。这意味着,如果原始对象中的某个属性是一个复杂的数据结构,如数组或自定义类型,深度拷贝会递归地复制这些结构的所有层次...
然而,这种方法存在局限性,例如无法处理非公共属性、私有字段、静态成员或嵌套类型的深拷贝,以及无法处理循环引用的问题。在实际项目中,可能需要更复杂的逻辑来处理这些情况,例如使用`ICloneable`接口、反射、...
在Java开发中,对象间的属性拷贝是一个常见的需求,特别是在数据转换、模型绑定或服务调用等场景。本文将深入探讨如何利用注解(Annotation)来实现这一功能,以提高代码的可读性和可维护性。我们将从标题“利用...
在实现深度复制时,反射可以帮助我们遍历对象的所有成员,包括字段和属性,然后逐个复制它们。 以下是一个使用反射实现对象深度复制的示例代码: ```csharp public static class DeepCopyHelper { public static ...
Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、对象等的内部属性和方法。在给定的标题和描述中,我们关注的是如何利用反射机制来实现对象的深度拷贝。深度拷贝是指创建一个与...
内容概要:本资源提供了一个Java Bean转换工具类示例,展示了如何使用反射和JSON序列化实现对象之间的属性拷贝。该工具类包含两个主要方法:convertTo和convertByJackson,前者基于反射用于结构相同的对象间的属性...
Java没有内置的深拷贝机制,但可以通过反射实现。假设我们有两个 `Person` 类的实例 `person1` 和 `person2`,我们想要将 `person1` 的属性值复制到 `person2`: ```java public static void copyBeanProperties...
浅拷贝(Shallow Copy)是在对象的属性为基本数据类型时拷贝这些值,对于属性为引用数据类型的,则拷贝对象的引用而非实际创建一个新的对象。这意味着,如果原始对象的引用数据类型的值发生变化,拷贝后的对象的相同...
另外,将DLL拷贝到应用程序的运行目录下可以简化路径管理。 总结来说,反射动态加载DLL是.NET编程中的一个重要技巧,尤其是在需要动态更新或插件式架构的应用中。正确处理加载和卸载,可以有效地实现DLL的更新和...
其`copy(Object object)`方法通过反射实现了对象的深拷贝。首先获取对象的类型,然后通过默认构造方法创建新对象,接着获取所有属性,遍历这些属性并使用对应的get和set方法复制属性值。注意,此方法仅适用于遵循...
- **通用工具类**:例如深度拷贝、属性复制等,反射可以方便地在不同对象间复制属性。 以下是一个简单的反射使用示例: ```java public class ReflectTester { public Object copy(Object object) throws ...
深浅拷贝的深入解析 摘要:本文主要讲解了C#中的深浅拷贝,通过示例代码详细介绍了浅拷贝和深拷贝的概念和应用场景,并对字符串类型的不可变性进行了深入解析。 浅拷贝是将对象中的所有字段复制到新对象中去,对于...
这个例子展示了如何使用反射来创建一个对象的深拷贝,即复制对象及其所有属性。 #### 动态代理 Java反射机制还支持动态代理,通过`java.lang.reflect.Proxy`类和`InvocationHandler`接口可以实现在运行时动态创建...