我的项目需要知道是否使用更改数据,但我不允许修改数据模型本身。例如,我有这样的课程:
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),每当我想检查更改时,我再次执行该逻辑并将新哈希与旧哈希进行比较。如果它不相同,则表示我的数据已更改。它以某种方式工作正常,但我仍然担心它,不确定它的好方法。
答案 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