我有一个像这样的类构造函数:

public JavoImageCorrectedDataHeader()
    {
        ByteBuffer buffer = ByteBuffer.allocate(this.size());
        buffer.order(java.nio.ByteOrder.LITTLE_ENDIAN);
        setByteBuffer(buffer, 0);
        System.out.println("buffer.hasCode=" + buffer.hashCode());
    }

在我的其他类(class)中,我通过使用以下方法在不同的位置和时间创建了上述类(class)的许多实例:
new JavoImageCorrectedDataHeader()

然后,我希望它将为他们打印出不同的hashCode。但是我实际上看到打印出了相同的 hashCode :
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241
buffer.hasCode=1742602241

我一定想念有关如何使用ByteBuffer的知识。

最佳答案

从javadoc:

如果您没有填充ByteBuffers,或者没有用相同的东西填充它们,则哈希码将是相同的。

关于java - 为什么ByteBuffers hashCodes相同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11089890/

10-09 13:26