写了个公共方法,用新对象中非NULL属性值去取代老对象中的同名属性值,备忘。
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Test
{
/**
* @param args
*/
public static void main(String[] args)
{
User user1 = new User();
User user2 = new User();
user2.setAge(222);
user2.setNum(333);
user2.setUserName("222Name");
User user = (User) replaceValue(user1, user2);
System.out.println(user.toString());
}
public static String generateSetName(String fieldName) {
if (null == fieldName || "".equals(fieldName)) {
return null;
}
return "set" + fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1);
}
private static Object replaceValue(Object newObject, Object oldObject)
{
try
{
Field[] incrementFields = newObject.getClass().getDeclaredFields();
Field[] oldFields = oldObject.getClass().getDeclaredFields();
for (int i = 0; i < incrementFields.length; i++)
{
Field incrementField = incrementFields[i];
incrementField.setAccessible(true);
for (int j = 0; j < oldFields.length; j++)
{
Field field = incrementFields[j];
field.setAccessible(true);
if (incrementField.getName().equals(field.getName()))
{
if(incrementField.get(newObject) != null)
{
Method fieldSetMet = newObject.getClass()
.getMethod(generateSetName(incrementField.getName()), incrementField.getType());
fieldSetMet.invoke(oldObject, incrementField.get(newObject));
}
}
}
}
} catch (Exception ex)
{
ex.printStackTrace();
}
return oldObject;
}
}
分享到:
相关推荐
这种方法特别适用于处理大量数据表的情况,避免了手动为每个实体类属性赋值的繁琐操作。反射虽然提供了一种灵活的方式来实现这一目标,但在性能敏感的应用场景中可能不是最佳选择。因此,在实际应用中,还需要根据...
标题中的“通过构造及反射实现类属性赋值”涉及到的技术是Java的构造函数和反射机制。这两种方法在特定场景下能帮助我们更灵活、更深入地处理对象属性的复制。 首先,构造函数是创建新对象时调用的特殊方法,它可以...
最近有遇到两个类之间的赋值问题,两个类的属性几乎都一样的,所以写了个通过反射获取属性的然后赋值的方法,把一个类的属性的值赋值给另一个类。 框架是.net 4.5 public static D Mapper(S s) { D d = Activator...
Java面向对象(高级)-- 类中属性赋值的位置及过程
本篇文章将详细探讨如何利用反射来给对象的属性赋值,以及这个过程中的关键知识点。 一、反射的概念 反射是指在程序运行期间获取并操作类、接口、字段和方法等元数据的能力。通过反射,我们可以在运行时动态地创建...
首先,`arcpy`中的属性赋值通常涉及对地理特征类(feature class)或表(table)的字段进行操作。通过指定特征选择、循环遍历选定的特性,然后更新特定字段的值,我们可以实现批量修改属性的目的。例如,对于管线...
【Java面向对象基础】属性赋值过程、JavaBean与UML类图 一、属性赋值过程 在Java中,类的属性分为实例变量和非实例变量(即静态变量)。实例变量是每个对象独有的,而静态变量则由类的所有实例共享。 1. 实例变量...
在这个特定的实例中,我们讨论的是一个用于给参数对象属性赋值的拦截器。这个拦截器的主要目标是在执行增删改操作时,自动为数据模型对象的特定属性(如创建人、创建时间、修改人、修改时间等)赋值。 在MyBatis中...
在这个场景中,我们关注的是"assign_sg and rescode_surpactcl属性赋值_sitecodetk_"这个主题,这涉及到使用TCL脚本语言在Surpac中对岩性和密度属性的赋值。 首先,"assign_sg"可能指的是为地质体(或特定地质特征...
近有遇到两个类之间的赋值问题,两个类的属性几乎都一样的,所以写了个通过反射获取属性的然后赋值的方法,把一个类的属性的值赋值给另一个类。 框架是.net 4.5 public static D Mapper(S s) { D d = ...
当我们需要为一个属性赋值另一个bean时,可以使用`ref`属性。例如,`Person`类可能依赖于`Address`类: ```xml ``` 这样,Spring会将`address` bean注入到`person` bean的`address`属性中。 3. **...
水系面 LAK_S 的 code 码根据名称字段赋值,如湖泊统一赋值为 230100。 代码 (CODE) 名称 (NAME) 级别 (LEVEL) 210100 河流 (长江等)1 230101 湖泊2 240000 水库3 210101 细长的河流4 230102 坑塘5 9. 水系线 ...
然而,在实际开发中,我们经常需要将枚举值反向映射到实体类的属性上,以便在处理表单提交的数据时进行赋值。这可以有效地减少代码的冗余,提高可读性和维护性。本文将详细探讨如何创建一个工具类来实现这个功能。 ...
3. **给属性赋值**: - 使用`field[i].getType().getConstructor(field[i].getType()).newInstance("kou")`创建字段类型的实例,并将其作为参数传递给`set`方法,从而给字段赋值。这适用于基本类型和字符串类型的...
Java实现不同的类的属性之间相互赋值 在 Java 中,实现不同的类的属性之间相互赋值是一种非常常见的操作,特别是在读写数据库的时候。这篇文章将讲解如何使用 Java 实现不同的类的属性之间相互赋值。 在开发过程中...
在前端开发领域,对象属性的赋值是...掌握对象属性赋值相关知识点对于前端程序员来说是非常重要的,因为它直接关系到代码质量和开发效率。此外,理解不同数据结构的特性,能够帮助开发者在实际项目中做出更合理的选择。
在给定的场景中,我们探讨如何使用反射来获取实体类的所有属性和方法,并对具有null值的属性进行赋值。下面将详细介绍这个过程。 首先,我们要创建一个实体类Person,它包含一些基本类型的属性,如id(int型)、...
在Java Spring框架中,`@Value`注解是用于注入属性值的一个重要工具,它可以从配置文件、表达式语言(SpEL)或者属性源中获取值,并将其赋值给bean的字段、方法或方法/构造函数参数。这个注解使得程序更加灵活,不...
三调图斑赋值插件,arcgis10.3以上环境,选择地类直接点击图斑完成赋值