需求:对数据库中两条记录中的所有属性进行比较,其中一条是已审核过的,需要将未审核的数据中不同的属性在页面上标识出来,比如字段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编程中,比较对象属性的数据变化是一项常见的需求,特别是在数据跟踪、日志记录或版本控制等场景。本文将深入探讨如何实现这个功能,并基于给定的文件`PriceCheckDetail.java`和`ObjectCompareUtil.java`来...
本篇文章将深入探讨JavaScript对象属性排序的原理、方法以及注意事项。 首先,了解JavaScript对象的基本特性是至关重要的。在ECMAScript规范中,对象的属性访问速度并不依赖于属性的位置或顺序,因为它们内部是通过...
本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和自定义比较器(Comparator)来完成的,对于复杂的数据排序需求具有很高的灵活性。...
接下来,我们创建一个名为`ReflectorClass`的辅助类,其中包含一个静态方法`getPropertyName`,这个方法接受一个对象实例作为参数,通过反射获取该对象的所有属性名及对应的类型,并返回一个字符串,每个属性名与...
微信小程序两种为对象属性赋值的方式 对应config.wxml 阶段一 对应config.js data:{ //定义对象 configs:{} } //方式一 switchChange:function(e){ //为对象的某一属性赋值 configs.config1={ }; ...
codesys面向对象的方法属性动作接口 codesys面向对象的方法属性动作接口是指在codesys中实现面向对象编程的方法、属性和动作接口。这种接口允许用户在codesys中实现面向对象编程,使用继承、多态和封装等面向对象...
这个"ASP对象属性参考手册"显然是一个关于ASP中核心对象及其属性的详细指南。在ASP中,有几个关键的对象,它们是Web应用程序的核心组成部分,包括Request、Response、Session、Application、Server和ObjectContext等...
(1)创建测试页面,在chapter08项目的WebContext根目录中,编写一个testattribute.jsp页面,以观察各个域对象属性事件监听器的作用。 (2)在cn.itcast.chapter08.listener包中,编写一个名为MyAttributeListener的...
这篇博文“MyBatisDemo && JAVA把一个对象的全部属性复制到另一个相同的对象”探讨的是如何在Java编程中实现对象属性的深度复制。MyBatis是一个流行的Java持久层框架,它简化了数据库操作,而对象复制则是处理业务...
标题和描述中的"无bug带属性填充包括对象嵌套属性填充与多文件上传及所有标签"涉及到多个关键知识点,我们将逐一进行详解。 首先,"属性填充"是程序设计中的一种常见操作,尤其是在对象模型构建时。它指的是为一个...
例如,delete不能删除由JavaScript语言定义的属性,也不能删除通过var、let、const声明的变量,但可以删除未声明的变量、全局对象window上的属性,以及可以删除对象中的对象属性。在实际应用中,开发者需要合理利用...
在本文中,我们将深入探讨如何在基于SuperMap .NET平台的iObject技术中,实现“选中对象,获取邻接对象属性值”的功能,这在处理道路网络、查询相邻地物信息等方面具有广泛应用。 首先,`iObject`是SuperMap .NET ...
### JavaScript对象属性详解 在深入探讨JavaScript对象属性之前,我们首先需要理解JavaScript是一种广泛应用于网页开发的编程语言,它能够使网页变得动态、交互性更强。JavaScript中的对象是其核心特性之一,几乎...
WPS软件vba的对象属性大全,开发文档;VBA属性
在Excel VBA(Visual Basic for Applications)编程中,对象、属性和方法是核心概念,用于构建和控制Excel应用程序的功能。本篇文章将详细解释这些概念,并通过实例加深理解。 首先,我们要明白什么是对象。在VBA中...
Ajax 基本对象的属性和方法 Ajax 基本对象是指在异步 JavaScript 和 XML(AJAX)技术中使用的基本对象,该对象提供了一些属性和方法来处理 XML 的 DOM 元素和遍历 XML 的 DOM 元素。下面是 Ajax 基本对象的属性和...
受 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根据对象的某个属性的值去重
本文档聚焦于Excel中的VBA对象及其属性和方法,提供了针对Application对象的详细属性和方法查询集,这些内容对于使用VBA进行Excel开发的用户来说非常有用。 Application对象是VBA中最重要的对象之一,它是Excel的...