`
capp0139
  • 浏览: 168232 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

对象比较属性

 
阅读更多

需求:对数据库中两条记录中的所有属性进行比较,其中一条是已审核过的,需要将未审核的数据中不同的属性在页面上标识出来,比如字段T1不同,那么T1是红色的。

解决思路:利用JAVA反射机制,将两个对象进行比较,如果有不同的属性值,将该属性值改为"1@"+value,否则改为"0@"+value,然后在页面上进行判断,并截取显示。

 

public static Object CompareObj(Object obj1, Object obj2) {
		// 对obj1反射
		Class obj1Class = obj1.getClass();
		Method[] obj1methods = obj1Class.getDeclaredMethods();
		// 对obj2反射
		Class obj2Class = obj2.getClass();
		Method[] obj2methods = obj2Class.getDeclaredMethods();
		// 把obj2的方法影射到MAP中,方便调用
		Map obj2MeMap = new HashMap();
		for (int i = 0; i < obj2methods.length; i++) {
			Method method = obj2methods[i];
			obj2MeMap.put(method.getName(), method);
		}
		for (int i = 0; i < obj1methods.length; i++) {
			String methodName = obj1methods[i].getName();
			if (methodName != null && methodName.startsWith("get")) {
				// 取得对象里的FIELD
				try {
					// 调用obj1实例中的getXXXX方法
					Object returnObj = obj1methods[i].invoke(obj1, new Object[0]);
					Object returnObj2 = obj1methods[i].invoke(obj2, new Object[0]);
					// 把值放入obj2对应的域中
					Method obj2method = (Method) obj2MeMap.get("set" + methodName.split("get")[1]);
					// 调用obj2实例中的setXXX方法
					if (returnObj2 != null) {
						if (returnObj == null) {
							obj2method.invoke(obj2, "0@" + returnObj2);
						} else {
							if (returnObj.equals(returnObj2)) {
								obj2method.invoke(obj2, "0@" + returnObj2);
							} else {
								obj2method.invoke(obj2, "1@" + returnObj2);
							}
						}
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		return obj2;
	}
分享到:
评论

相关推荐

    Java对象属性数据比较,返回变化数据

    在Java编程中,比较对象属性的数据变化是一项常见的需求,特别是在数据跟踪、日志记录或版本控制等场景。本文将深入探讨如何实现这个功能,并基于给定的文件`PriceCheckDetail.java`和`ObjectCompareUtil.java`来...

    js对象属性排序

    本篇文章将深入探讨JavaScript对象属性排序的原理、方法以及注意事项。 首先,了解JavaScript对象的基本特性是至关重要的。在ECMAScript规范中,对象的属性访问速度并不依赖于属性的位置或顺序,因为它们内部是通过...

    java List中对象多属性排序及各属性排序设置

    本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和自定义比较器(Comparator)来完成的,对于复杂的数据排序需求具有很高的灵活性。...

    利用反射机制动态获取对象属性名称及数据类型

    接下来,我们创建一个名为`ReflectorClass`的辅助类,其中包含一个静态方法`getPropertyName`,这个方法接受一个对象实例作为参数,通过反射获取该对象的所有属性名及对应的类型,并返回一个字符串,每个属性名与...

    微信小程序 两种为对象属性赋值的方式详解

    微信小程序两种为对象属性赋值的方式 对应config.wxml 阶段一 对应config.js data:{ //定义对象 configs:{} } //方式一 switchChange:function(e){ //为对象的某一属性赋值 configs.config1={ }; ...

    codesys面向对象的方法属性动作接口

    codesys面向对象的方法属性动作接口 codesys面向对象的方法属性动作接口是指在codesys中实现面向对象编程的方法、属性和动作接口。这种接口允许用户在codesys中实现面向对象编程,使用继承、多态和封装等面向对象...

    ASP对象属性参考手册

    这个"ASP对象属性参考手册"显然是一个关于ASP中核心对象及其属性的详细指南。在ASP中,有几个关键的对象,它们是Web应用程序的核心组成部分,包括Request、Response、Session、Application、Server和ObjectContext等...

    用java实现监听对象的属性变更

    (1)创建测试页面,在chapter08项目的WebContext根目录中,编写一个testattribute.jsp页面,以观察各个域对象属性事件监听器的作用。 (2)在cn.itcast.chapter08.listener包中,编写一个名为MyAttributeListener的...

    MyBatisDemo && JAVA把一个对象的全部属性复制到另一个相同的对象

    这篇博文“MyBatisDemo && JAVA把一个对象的全部属性复制到另一个相同的对象”探讨的是如何在Java编程中实现对象属性的深度复制。MyBatis是一个流行的Java持久层框架,它简化了数据库操作,而对象复制则是处理业务...

    无bug带属性填充包括对象嵌套属性填充与多文件上传及所有标签

    标题和描述中的"无bug带属性填充包括对象嵌套属性填充与多文件上传及所有标签"涉及到多个关键知识点,我们将逐一进行详解。 首先,"属性填充"是程序设计中的一种常见操作,尤其是在对象模型构建时。它指的是为一个...

    JS删除对象中某一属性案例详解

    例如,delete不能删除由JavaScript语言定义的属性,也不能删除通过var、let、const声明的变量,但可以删除未声明的变量、全局对象window上的属性,以及可以删除对象中的对象属性。在实际应用中,开发者需要合理利用...

    选中对象,获取邻接对象属性值

    在本文中,我们将深入探讨如何在基于SuperMap .NET平台的iObject技术中,实现“选中对象,获取邻接对象属性值”的功能,这在处理道路网络、查询相邻地物信息等方面具有广泛应用。 首先,`iObject`是SuperMap .NET ...

    js对象属性大全下载

    ### JavaScript对象属性详解 在深入探讨JavaScript对象属性之前,我们首先需要理解JavaScript是一种广泛应用于网页开发的编程语言,它能够使网页变得动态、交互性更强。JavaScript中的对象是其核心特性之一,几乎...

    WPS软件vba的对象属性大全.xls

    WPS软件vba的对象属性大全,开发文档;VBA属性

    Excel对象、属性、方法、实例

    在Excel VBA(Visual Basic for Applications)编程中,对象、属性和方法是核心概念,用于构建和控制Excel应用程序的功能。本篇文章将详细解释这些概念,并通过实例加深理解。 首先,我们要明白什么是对象。在VBA中...

    Ajax基本对象的属性和方法

    Ajax 基本对象的属性和方法 Ajax 基本对象是指在异步 JavaScript 和 XML(AJAX)技术中使用的基本对象,该对象提供了一些属性和方法来处理 XML 的 DOM 元素和遍历 XML 的 DOM 元素。下面是 Ajax 基本对象的属性和...

    解决Vue2.0 watch对象属性变化监听不到的问题

    受 ES5 的限制,Vue.js 不能检测到对象属性的添加或删除。 请参照https://v1-cn.vuejs.org/guide/reactivity.html 解决方式: 通过vue的this.$set(object, key, value)方法 通过Object.assign()重新创建一个对象, ...

    对象字段变化比较工具

    在面向对象编程中,对象由一组属性(或称为字段)和它们对应的方法构成。当对象的某个字段值在一段时间内发生改变,我们就说该字段发生了变化。这种变化可能是由于程序逻辑、用户交互或者外部数据输入等原因导致的。...

    java list根据对象的某个属性的值去重

    java list根据对象的某个属性的值去重,java list根据对象的某个属性的值去重java list根据对象的某个属性的值去重

    VBA各对象的属性、方法查询集

    本文档聚焦于Excel中的VBA对象及其属性和方法,提供了针对Application对象的详细属性和方法查询集,这些内容对于使用VBA进行Excel开发的用户来说非常有用。 Application对象是VBA中最重要的对象之一,它是Excel的...

Global site tag (gtag.js) - Google Analytics