我有一堂课如下:
final ByteBuffer data;
1st_constructor(arg1, arg2, arg3){
data = ByteBuffer.allocate(8);
// Use "put" method to add values to the ByteBuffer
//.... eg: 2 ints
//....
data.flip();
}
1st_constructor(arg1, arg2){
data = ByteBuffer.allocate(12);
// Use "put" method to add values to the ByteBuffer
//.... eg: 3 ints
//....
data.flip()
}
在我的主类中,我创建了一个名为“data_packet”的类的实例,并将 ByteBuffer“数据”的内容存储到 byte[] 中。
data_packet.data.get(buf,0,buf.length);
随后,当我使用:
data_packet.data.getInt();
我得到一个“BufferUnderFlow 异常”。但是,如果我在使用 getInt() 之前再次翻转缓冲区,它就可以正常工作。
所以我的问题是,为什么我需要再次翻转缓冲区?它不是已经设置为在构造函数中读取吗?
谢谢你。