gpt4 book ai didi

java - 比较任意两个Java对象的常用方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:11 25 4
gpt4 key购买 nike

我想比较两个 Java 对象而不覆盖 equals 方法。由于我需要重写我拥有的 n 个类中的 equals 方法,因此我需要一个通用的实用方法来比较两个 Java 对象。

类似的东西:

A a1,a2;
B b1,b2;
C c1,c2;
-----
-----
boolean isEqual1 = new ObjectComparator().isEquals(a1 , a2);
boolean isEqual2 = new ObjectComparator().isEquals(b1 , b2);
boolean isEqual3 = new ObjectComparator().isEquals(c1 , c2);

请帮我写一个比较任何 Java 对象的通用工具

希望通过Field类,和getClass方法来实现。请指导我。

最佳答案

看看EqualsBuilder.reflectionEquals在 Apache Commons 库中。

来自documentation :

This method uses reflection to determine if the two Objects are equal.

It uses AccessibleObject.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manager, if the permissions are not set up correctly. It is also not as efficient as testing explicitly.


因此,在您的示例中,它看起来像:

A a1,a2;
B b1,b2;
C c1,c2;
-----
-----
boolean isEqual1 = EqualsBuilder.reflectionEquals(a1 , a2);
boolean isEqual2 = EqualsBuilder.reflectionEquals(b1 , b2);
boolean isEqual3 = EqualsBuilder.reflectionEquals(c1 , c2);

关于java - 比较任意两个Java对象的常用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7334074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com