在运行时区分两个Java对象的最佳方法

在运行时区分两个Java对象的最佳方法,java,diff,comparable,jibx,Java,Diff,Comparable,Jibx,我有一个XML文档,我正在用JiBX绑定到POJO。在其生命周期中,文档将不断发展,新的元素将被添加,其他元素将被修改。在每次提交时,我希望将现有文档与新的待保存文档进行比较,并执行适当的操作(即,在更改或修改特定字段时发出通知) 听起来似乎有很多方法可以使用XML实现这一点,但是由于我已经绑定了XML,并且将它放在了一个对象中,我想知道是否有任何现有的库可以在同一类的两个对象上执行“diff” 我目前的想法是实现类似Java的可比较接口的东西,但它不会返回-1、0或1,而是以某种方式返回更改。

我有一个XML文档,我正在用JiBX绑定到POJO。在其生命周期中,文档将不断发展,新的元素将被添加,其他元素将被修改。在每次提交时,我希望将现有文档与新的待保存文档进行比较,并执行适当的操作(即,在更改或修改特定字段时发出通知)

听起来似乎有很多方法可以使用XML实现这一点,但是由于我已经绑定了XML,并且将它放在了一个对象中,我想知道是否有任何现有的库可以在同一类的两个对象上执行“diff”


我目前的想法是实现类似Java的可比较接口的东西,但它不会返回-1、0或1,而是以某种方式返回更改。只是想知道是否有更好的方法?

如果对象的字段为HashSet类型,您希望有什么样的差异?区分并不容易,但是如果你想。。。这就是为什么我想在浪费精力玩自己的游戏之前先问一下。我唯一的其他数据结构是ArrayList,所以这看起来非常有希望!Ooof。完成一个差异需要将近8秒的时间。尽管我正在解组相同的XML文档,但它仍然显示为已更改。我认为这是在比较原始对象,而不是这些对象中的元素(字符串、整数、长字符串等)。但不管怎样,这太慢了。因为我只对元素的一个子集感兴趣,所以我想我会自己做。谢谢你的建议!如果对象的字段类型为HashSet,那么您希望得到什么样的差异?区分并不容易,但是如果你想。。。这就是为什么我想在浪费精力玩自己的游戏之前先问一下。我唯一的其他数据结构是ArrayList,所以这看起来非常有希望!Ooof。完成一个差异需要将近8秒的时间。尽管我正在解组相同的XML文档,但它仍然显示为已更改。我认为这是在比较原始对象,而不是这些对象中的元素(字符串、整数、长字符串等)。但不管怎样,这太慢了。因为我只对元素的一个子集感兴趣,所以我想我会自己做。谢谢你的建议!