如何监视类变量的变化?

时间:2017-08-01 04:27:02

标签: java

我的项目需要知道是否使用更改数据,但我不允许修改数据模型本身。例如,我有这样的课程:

public class Person {
    String firstName;
    String lastName;
    Address address;
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public Address getAddress() {
        return lastName;
    }
    public void setAddress(Address address) {
        this.address= address;
    }

}

它应该总是像这样POJO,我不能在getter / setter中调用任何其他方法,所以有一些解决方案,但它不符合我的要求:

我也不能在这里申请观察员模式。

我当前的解决方案是:在初始化人员实例后,我将其解析为JSON并创建哈希(MD5),每当我想检查更改时,我再次执行该逻辑并将新哈希与旧哈希进行比较。如果它不相同,则表示我的数据已更改。它以某种方式工作正常,但我仍然担心它,不确定它的好方法。

1 个答案:

答案 0 :(得分:1)

这取决于某些因素:

POJO是否可序列化/实现hashCode / equals? 您可以克隆您的对象并检查等于

你能改变对象的引用吗? 您可以扩展对象类并在方法中添加一些检查。

要序列化为JSON,您可以使用GSON lib: 来自谷歌的https://github.com/google/gson。之后你可以检查字符串等于

Maven依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.1</version>
</dependency>

https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.1