Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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,我使用以下代码来序列化和反序列化我的对象,该对象包含buffereImage字段 private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); if (bufferedImageField != null) { out.writeBoolean(true); ImageIO.write(bufferedImageFiel

我使用以下代码来序列化和反序列化我的对象,该对象包含
buffereImage
字段

private void writeObject(ObjectOutputStream out) throws IOException {
    out.defaultWriteObject();
    if (bufferedImageField != null) {
        out.writeBoolean(true);
        ImageIO.write(bufferedImageField, "png", out);
    }
    else
        out.writeBoolean(false);
}

private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
    in.defaultReadObject();
    if (in.readBoolean())
        bufferedImageField= ImageIO.read(in);
    else
        bufferedImageField = null;
}
但问题是图像正在被压缩和解压缩,因此对象的
hashCode()
在反序列化后会发生变化。此外,压缩和解压缩也需要很多时间


如何在不压缩的情况下序列化图像并精确地反序列化它?

buffereImage
对象继承
hashCode
。因此,
hashCode
上的值与图像的内容没有任何关系。你在这里找错了方向……无论如何,除非你使用
buffereImage
作为
HashMap
中的一个键(你为什么要这样做?!)你到底为什么在意?@AndrewR这意味着,HashCode在序列化之前和之后都不会是一样的。因为它是一个不同的对象。@AndrewR那么
hashCode
绝对是最糟糕的主意
hashCode
必须为同一对象返回相同的值,但可能为不同对象返回相同的值
public int hashCode(){return 1;}
是有效的
hashCode
实现。使用图像数据的MD5散列。“1/4300000000的概率对于我来说已经足够小了。”-好的,但事实上你不能将它与序列化一起使用,这使得整个讨论毫无意义。