【问题标题】:Java automatic attributes comparisonJava 自动属性比较
【发布时间】:2012-04-24 09:55:18
【问题描述】:

我最近与一位同事讨论了如何比较同一个 java 类的 2 个实例。

您有一个复杂对象的两个实例,并且想知道这两个实例之间的哪些属性不同。

这是一个用例: 您有一个包含许多字段的用户个人资料,并且用户提交了一份新个人资料,您想知道哪些字段已更改,以便能够显示“成功更改您的生日、姓名、街道名称......”之类的内容

所以目前,我最好的解决方案是在类中编写一个比较方法,该方法接受另一个对象并逐个比较每个字段,然后返回不同字段的列表。

我想知道是否有任何自动方法(例如来自外部库)可以做到这一点,而无需手动指定每个属性。

顺便说一句,如果 hibernate 有一个方法可以这样做来比较本地和数据库对象,它就可以做到这一点。

【问题讨论】:

  • 希望这有帮助,类似的线程 - stackoverflow.com/questions/369512/…
  • 您可能会为此目的使用反射(使用getClass().getDeclaredFields())或类似的东西。但是我猜应该有人已经编写并发布了这样的代码,所以也许有人知道这一点。

标签: java hibernate attributes compare


【解决方案1】:

如 Guillaume Polet 所述,使用反射。我还会在需要像这样公开的字段上添加注释。如果您不喜欢公共字段的想法,请使用带有注释的 getX() 方法。我不知道任何库代码可以进行比较;但写起来不会花很长时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多