Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测java序列化的对象更改_Java_Serialization - Fatal编程技术网

检测java序列化的对象更改

检测java序列化的对象更改,java,serialization,Java,Serialization,我使用java序列化将java对象保存到文件中。我想实现一个新系统,在这个系统中,如果对对象进行了任何更改,我只保存该对象。是否有任何java内置选项来检测对象在程序执行期间是否发生了更改 或者,检测这一点的唯一方法是使用一个标志,如果调用对象的任何setter,该标志将改变 谢谢正确,对象没有内置的“脏”标志。如果您知道您的访问总是通过bean模式进行的,那么您就可以在那里维护该标志。看起来您正在尝试做的另一个选择是在加载字节码时使用AspectJ之类的工具插入字节码,并在字段更改时设置“脏”

我使用java序列化将java对象保存到文件中。我想实现一个新系统,在这个系统中,如果对对象进行了任何更改,我只保存该对象。是否有任何java内置选项来检测对象在程序执行期间是否发生了更改

或者,检测这一点的唯一方法是使用一个标志,如果调用对象的任何setter,该标志将改变


谢谢

正确,对象没有内置的“脏”标志。如果您知道您的访问总是通过bean模式进行的,那么您就可以在那里维护该标志。看起来您正在尝试做的另一个选择是在加载字节码时使用AspectJ之类的工具插入字节码,并在字段更改时设置“脏”标志。即使访问不总是来自bean模式方法,这也会起作用。@aldito2-哈希代码/校验和不能解决此问题。如果校验和匹配,您不知道对象是否已更改,因为变异可能会将对象映射到散列与原始状态冲突的状态。您必须对照保存的整个对象检查整个对象。@BadZen:AspectJ在运行时不涉及字节码操作,它使用InvocationHandler