通过序列化来判断一个对象是否已经更改

来源:互联网 发布:js div获取焦点 编辑:程序博客网 时间:2024/04/29 09:13

import java.io.Serializable;
public class SerializableModel implements Serializable {
    public String modelattr1;
    public String modelattr2;
   public String modelattr3;
}

首先创建一个可序列化的测试对象SerializableModel

然后通过下面的方法对其进行是否更改的测试

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class SerializableTest {
 
 public static void main(String args[]){
  SerializableModel sm=new SerializableModel();
  sm.modelattr1="attr1"; 
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
  try {
   ObjectOutputStream oos= new ObjectOutputStream(baos);
   oos.writeObject(sm);
   byte[] bytes1 =baos.toByteArray();
   sm.modelattr2 ="attr2";
   ObjectOutputStream oos2= new ObjectOutputStream(baos2);
   oos2.writeObject(sm);
   byte[] bytes2 =baos2.toByteArray();
   String str1=new String(bytes1);
   String str2=new String(bytes2);
   if(str1.compareTo(str2)==0){
    System.out.println("equals");
   }else{
    System.out.println("not equals");
   }
  } catch (IOException e) {
   e.printStackTrace();
  }

 }
}

如果输出equals则对象没有更改,如果输出not equals则对象有属性值发生变化