首页 > 其他分享 >通过反射对比两个对象是否相等

通过反射对比两个对象是否相等

时间:2024-07-02 14:23:06浏览次数:17  
标签:obj1 反射 obj2 return Object field 相等 getClass 对比

/**
* 通过反射对比两个对象是否相等
*
* @param obj1 obj1
* @param obj2 obj2
* @return boolean
* @throws IllegalAccessException e
*/
public static boolean propertiesAreEqual(Object obj1, Object obj2) throws IllegalAccessException {
if (obj1 == obj2) {
return true;
}
if (obj1 == null || obj2 == null) {
return false;
}
if (obj1.getClass() != obj2.getClass()) {
return false;
}
Field[] fields = obj1.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true); // 使私有属性也可以访问
Object val1 = field.get(obj1);
Object val2 = field.get(obj2);
if (!Objects.equals(val1, val2)) {
return false;
}
}
return true;
}

标签:obj1,反射,obj2,return,Object,field,相等,getClass,对比
From: https://www.cnblogs.com/databank/p/18279775

相关文章

  • 图神经网络版本的Kolmogorov Arnold(KAN)代码实现和效果对比
    KolmogorovArnoldNetworks(KAN)最近作为MLP的替代而流行起来,KANs使用Kolmogorov-Arnold表示定理的属性,该定理允许神经网络的激活函数在边缘上执行,这使得激活函数“可学习”并改进它们。目前我们看到有很多使用KAN替代MLP的实验,但是目前来说对于图神经网络来说还没有类似的实验......
  • 开发界的良心评测文章,告诉你WPF 与 WinForms 对比:性能、开发难度、特点及操作系统支持
    引言WindowsPresentationFoundation(WPF)和WindowsForms(WinForms)是微软提供的两种用于构建Windows桌面应用程序的框架。尽管它们都有助于开发高效的桌面应用程序,但在性能、开发难度、特点和操作系统支持方面存在显著差异。本文将详细比较WPF和WinForms,以帮助开发者选择......
  • 基于自适应波束成形算法的matlab性能仿真,对比SG和RLS两种方法
    1.程序功能描述基于自适应波束成形算法的matlab性能仿真,对比SG和RLS两种方法.            2.测试软件版本以及运行结果展示MATLAB2022a版本运行   3.核心程序forii=1:MTKLifSEL==1fori=1:length(r)......
  • 反射
    反射1.什么是反射Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。2.为......
  • Java中的反射
    1.什么是反射?反射是框架设计的灵魂。反射(Reflection)是Java的一种特性,它可以让程序在运行时获取自身的信息,并且动态地操作类或对象的属性、方法和构造器等。通过反射功能,可以让我们在不知道具体类名的情况下,依然能够实例化对象,调用方法以及设置属性。简单来说就是在类运行......
  • 反射的概念和使用
    反射的概念 反射是框架设计的灵魂,就是在类运行期间把类中成员抽取为其他类的过程为什么使用反射反射就是为了解决在运行期间对某个实例一无所知的情况下调用其方法和属性获取class反射类的三种方式一、通过类名.class属性Class<泛型>命名=类名.class;二、通......
  • C++ //练习 14.17 你在7.5.1节的练习7.40(第261页)中曾经选择并编写了一个类,你认为它应
    C++Primer(第5版)练习14.17练习14.17你在7.5.1节的练习7.40(第261页)中曾经选择并编写了一个类,你认为它应该含有相等运算符吗?如果是,请实现它;如果不是,解释原因。环境:LinuxUbuntu(云服务器)工具:vim 代码块classDate{ public: Date(); Date(size_ty,size_tm,siz......
  • 学懂C#编程:常用高级技术——学会C#的高级特性 反射
    反射(Reflection)是C#中的一项高级特性,它允许程序在运行时检查和操作程序集、模块、类型等元数据信息。通过反射,你可以在不知道类型信息的情况下,动态地创建对象、调用方法、访问属性等。反射的基本概念反射的核心在于System.Reflection命名空间,它提供了许多类和接口,用于获取类......
  • kafka 和Zookeeper 集群架构设计对比分析
    kafka和Zookeeper集群架构设计对比分析Kafka和Zookeeper是两个关键的分布式系统组件,它们在集群架构设计上有显著的差异。下面是对它们在集群架构设计方面的对比分析。1.Kafka集群架构设计1.1基本架构Kafka是一个分布式消息系统,由多个Broker组成。每个Broke......
  • JAVA高级进阶13单元测试、反射、注解
    第十三天、单元测试、反射、注解单元测试介绍单元测试就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试咱们之前是如何进行单元测试的?有啥问题?只能在main方法编写测试代码,去调用其他方法进行测试。无法实现自动化测试,一个方法测试失败,可能影响其他方......