我可以在同一jvm上使用kryo输出来对完全相同类的实例进行深度比较吗?

时间:2019-04-29 07:06:14

标签: java kryo

我要比较两个完全相同的类的实例。我已经在使用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输出相同的情况吗?

0 个答案:

没有答案