`

为类属性赋值

    博客分类:
  • java
阅读更多
写了个公共方法,用新对象中非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;

	}
	
	

}
分享到:
评论

相关推荐

    C#数据实体类中如何给属性赋值

    这种方法特别适用于处理大量数据表的情况,避免了手动为每个实体类属性赋值的繁琐操作。反射虽然提供了一种灵活的方式来实现这一目标,但在性能敏感的应用场景中可能不是最佳选择。因此,在实际应用中,还需要根据...

    通过构造及反射实现类属性赋值

    标题中的“通过构造及反射实现类属性赋值”涉及到的技术是Java的构造函数和反射机制。这两种方法在特定场景下能帮助我们更灵活、更深入地处理对象属性的复制。 首先,构造函数是创建新对象时调用的特殊方法,它可以...

    C#两个相同属性的类赋值方法

    最近有遇到两个类之间的赋值问题,两个类的属性几乎都一样的,所以写了个通过反射获取属性的然后赋值的方法,把一个类的属性的值赋值给另一个类。 框架是.net 4.5 public static D Mapper(S s) { D d = Activator...

    Java面向对象(高级)- 类中属性赋值的位置及过程

    Java面向对象(高级)-- 类中属性赋值的位置及过程

    利用反射给属性赋值

    本篇文章将详细探讨如何利用反射来给对象的属性赋值,以及这个过程中的关键知识点。 一、反射的概念 反射是指在程序运行期间获取并操作类、接口、字段和方法等元数据的能力。通过反射,我们可以在运行时动态地创建...

    arcpy属性赋值脚本(管线)、含tbx工具

    首先,`arcpy`中的属性赋值通常涉及对地理特征类(feature class)或表(table)的字段进行操作。通过指定特征选择、循环遍历选定的特性,然后更新特定字段的值,我们可以实现批量修改属性的目的。例如,对于管线...

    Java面向对象(基础)- 属性赋值过程、JavaBean和UML类图

    【Java面向对象基础】属性赋值过程、JavaBean与UML类图 一、属性赋值过程 在Java中,类的属性分为实例变量和非实例变量(即静态变量)。实例变量是每个对象独有的,而静态变量则由类的所有实例共享。 1. 实例变量...

    MyBatis拦截器:给参数对象属性赋值的实例

    在这个特定的实例中,我们讨论的是一个用于给参数对象属性赋值的拦截器。这个拦截器的主要目标是在执行增删改操作时,自动为数据模型对象的特定属性(如创建人、创建时间、修改人、修改时间等)赋值。 在MyBatis中...

    assign_sg and rescode_surpactcl属性赋值_sitecodetk_

    在这个场景中,我们关注的是"assign_sg and rescode_surpactcl属性赋值_sitecodetk_"这个主题,这涉及到使用TCL脚本语言在Surpac中对岩性和密度属性的赋值。 首先,"assign_sg"可能指的是为地质体(或特定地质特征...

    C# 两个具有相同属性的类赋值

    近有遇到两个类之间的赋值问题,两个类的属性几乎都一样的,所以写了个通过反射获取属性的然后赋值的方法,把一个类的属性的值赋值给另一个类。  框架是.net 4.5 public static D Mapper(S s) { D d = ...

    给属性赋值ref.zip

    当我们需要为一个属性赋值另一个bean时,可以使用`ref`属性。例如,`Person`类可能依赖于`Address`类: ```xml ``` 这样,Spring会将`address` bean注入到`person` bean的`address`属性中。 3. **...

    Java实现不同的类的属性之间相互赋值

    Java实现不同的类的属性之间相互赋值 在 Java 中,实现不同的类的属性之间相互赋值是一种非常常见的操作,特别是在读写数据库的时候。这篇文章将讲解如何使用 Java 实现不同的类的属性之间相互赋值。 在开发过程中...

    ARCGIS属性赋值[定义].pdf

    水系面 LAK_S 的 code 码根据名称字段赋值,如湖泊统一赋值为 230100。 代码 (CODE) 名称 (NAME) 级别 (LEVEL) 210100 河流 (长江等)1 230101 湖泊2 240000 水库3 210101 细长的河流4 230102 坑塘5 9. 水系线 ...

    java反射遍历实体类属性和类型,并赋值和获取值的简单方法

    3. **给属性赋值**: - 使用`field[i].getType().getConstructor(field[i].getType()).newInstance("kou")`创建字段类型的实例,并将其作为参数传递给`set`方法,从而给字段赋值。这适用于基本类型和字符串类型的...

    通过枚举反向给实体类赋值

    然而,在实际开发中,我们经常需要将枚举值反向映射到实体类的属性上,以便在处理表单提交的数据时进行赋值。这可以有效地减少代码的冗余,提高可读性和维护性。本文将详细探讨如何创建一个工具类来实现这个功能。 ...

    08-对象属性赋值.md

    在前端开发领域,对象属性的赋值是...掌握对象属性赋值相关知识点对于前端程序员来说是非常重要的,因为它直接关系到代码质量和开发效率。此外,理解不同数据结构的特性,能够帮助开发者在实际项目中做出更合理的选择。

    java 利用反射机制,获取实体所有属性和方法,并对属性赋值

    在给定的场景中,我们探讨如何使用反射来获取实体类的所有属性和方法,并对具有null值的属性进行赋值。下面将详细介绍这个过程。 首先,我们要创建一个实体类Person,它包含一些基本类型的属性,如id(int型)、...

    属性赋值@Value1

    在Java Spring框架中,`@Value`注解是用于注入属性值的一个重要工具,它可以从配置文件、表达式语言(SpEL)或者属性源中获取值,并将其赋值给bean的字段、方法或方法/构造函数参数。这个注解使得程序更加灵活,不...

    三调图斑赋值插件

    三调图斑赋值插件,arcgis10.3以上环境,选择地类直接点击图斑完成赋值

Global site tag (gtag.js) - Google Analytics