我要比较两个完全相同的类的实例。我已经在使用kryo进行序列化并将其发送到DB。
我想知道,我能否比较Kryo(默认配置)产生的两个byte []并确定两者是否相同?
我确实运行了以下代码,但似乎工作正常。需要专家的开放。
private static void testKryoCompare() {
//KryoUtil is just a utility wrapper on Kryo. Nothing special there.
int n = 1000_000;
long start;
for(int i=0;i<n;i++) {
byte[] b1 = KryoUtil.serialize(job);
job.setParam1(i+"");
byte[] b2 = KryoUtil.serialize(job);
if(Arrays.equals(b1, b2) == true)
System.out.println("Should not be true: "+job.getParam1());
}
for(int i=0;i<n;i++) {
job.setParam1(UUID.randomUUID().toString());
byte[] b1 = KryoUtil.serialize(job);
byte[] b2 = KryoUtil.serialize(job);
if(Arrays.equals(b1, b2)==false)
System.out.println("Should not be false: "+job.getParam1());
}
}
编辑
两个实例的类别完全相同-Job.class。没有领域变化的结构。如果一个字段是List <>,则一个实例可能具有ArrayList,而另一个实例可能具有LinkedList。在这种情况下,Kryo输出可能会有所不同。
我的用例是减少网络呼叫的次数和连锁反应。如果即使值相同也有一些电话打断,那就没关系。基于此,我在下面改述我的问题:
问题:即使Job.class中的值不同,也会出现kryo输出相同的情况吗?