代码属性复制除了用BeanUtils.copyProperties方法外,使用这个方法也可以实现。在hibernate,持久化中这个方法很受用的。
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class CopyObject {
public static Object copyProperties(Object rtuObject, Object object){
Class classType = object.getClass();
Class rtuClassType = rtuObject.getClass();
Field fields[] =classType.getDeclaredFields();
for(int i=0;i<fields.length;i++){
Field field = fields[i];
String fieldName = field.getName();
String firstLetter = fieldName.substring(0,1).toUpperCase();
String getMethodName = "get"+firstLetter+fieldName.substring(1);
String setMethodName = "set"+firstLetter+fieldName.substring(1);
try {
Method getMethod = classType.getMethod(getMethodName,new Class[]{});
Method setMethod = rtuClassType.getMethod(setMethodName,new Class[]{field.getType()});
Object value = getMethod.invoke(object,new Object[]{});
if (null!=value){
setMethod.invoke(rtuObject,new Object[]{value});
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
return rtuObject;
}
分享到:
相关推荐
在Java编程语言中,"get"和"set"方法是面向对象设计中常见的特性,用于访问和修改对象的私有属性。这些方法通常被称为getter和setter,是封装原则的重要体现,能够保护数据的安全性,避免直接暴露对象的内部状态。在...
Student student=new Student(); (Student2)student //在这个表达式(记得光标在表达式里面哦)按下alt+Enter,选中“哟嚯。。。好爽啊”就能自动生成下面代码 Student2 student2=new Student2();...
通过反射,我们可以获取类的所有字段和方法,包括那些私有的成员,这对于复制对象非常有用,因为它可以访问并复制对象的所有属性。 ### 复制持久化对象的需求与挑战 持久化对象通常与数据库中的记录相对应,它们...
本文将深入探讨Java中的浅复制和深复制,并以Android为背景,结合具体的实例讲解如何实现Java泛型深拷贝。 首先,我们要理解浅复制和深复制的概念。浅复制(Shallow Copy)是指创建一个新的对象,然后将原对象引用...
这种方式确保了属性的正确复制,同时如果源对象的属性有set器(setter方法),可以通过set器调用来执行通知或其他业务逻辑。 ```java public class TargetObject { private String attr; public TargetObject...
标题中的“自动生成带注释的getter和setter方法(Intellij、AndroidStudio插件)”指的是在编程过程中,开发者可以利用特定的插件自动化生成Java Bean模式中的getter和setter方法,并且这些方法会带有注释。...
在Java编程中,反射(Reflection)是一个强大的工具,它允许我们在运行时检查和操作类、接口、字段和方法。通过反射,我们可以动态地创建对象、访问私有成员、调用私有方法,甚至改变对象的行为。Java反射 API 主要...
throw new Exception("属性复制失败:" + e.getMessage()); } } ``` 最后,我们可以使用这个方法来实现属性之间的赋值。 ```java public static void main(String[] args) { ClassTestCopy1 c1 = new ...
public class BeanUtils extends org.springframework.beans.BeanUtils{ /** Bean方法名中属性名开始的下标 */ private static final int BEAN_METHOD_PROP_INDEX = 3;... /** * Bean属性复制工具方法。 * * @param d
这种方式简单易懂,但当属性多时,就需要一直get、set了,非常麻烦。 2. 重写clone()方法 Java语言中,clone()方法是Object类中的一个方法,用于创建对象的副本。clone()方法有两种实现方式:浅克隆和深克隆。浅...
- 在 Java 应用程序中通过 `System.setProperty("javax.net.ssl.trustStore", "tomcat.keystore")` 设置信任存储的路径。 - 通过 `System.setProperty("javax.net.ssl.trustStorePassword", "changeit")` 设置信任...
问题在于,BeanUtils在进行属性复制时,会尝试通过反射调用getter和setter方法,如果JavaBean的属性名称与实际getter或setter方法不完全匹配,或者属性类型不兼容,就会导致异常。例如,假设我们有一个属性名为`...
当前有多种方法可以实现对象相同字段的复制操作,例如,一个一个的get出来后又set进去,这种方法虽然可以实现复制,但是会增加很多的编码复杂度和一些没有营养的代码。另一种方法是使用别人已经存在的工具,例如...
这是通过获取属性的`get`和`set`方法实现的,适用于简单的JavaBean。 4. **使用反射的注意事项** - 性能开销:反射操作通常比直接调用方法慢,因为它涉及更多的安全检查和运行时解析。 - 安全问题:反射可以访问...
在自定义工具类中,我们也可以利用反射实现通用的功能,比如序列化与反序列化、属性复制等。 四、注意事项与性能影响 虽然反射提供了很大的灵活性,但也有其潜在问题。首先,反射操作通常比直接调用方法慢,因为它...
首先获取对象的类型,然后通过默认构造方法创建新对象,接着获取所有属性,遍历这些属性并使用对应的get和set方法复制属性值。注意,此方法仅适用于遵循JavaBean规范的对象,即每个属性都有对应的公共getter和setter...
3. **set和get方法**:set方法用于设置对象的属性值,get方法用于获取对象的属性值。这些方法常用于封装,保护对象内部数据的安全。 4. **构造方法**:构造方法是一个特殊的方法,用于初始化新创建的对象。它与类名...
6. **文件复制**:Java提供了`Files.copy()`方法来简单地复制文件。 ```java Path source = Paths.get("source.txt"); Path target = Paths.get("target.txt"); try { Files.copy(source, target, ...