私は ByteBuffer クラスのラッパーを持っています (私のコードでは、エンティティの基礎となる構造であるため)。ByteBuffer に固定サイズのエントリを格納し、何も書き込まれていないオフセットで読み取ろうとすると、null を返すか例外をスローする必要があります。私は次のコードを書きました:
private static final int SIZE = 16; //Bytes
private static final int BBSIZE = 48 * SIZE;
ByteBuffer blockMap = ByteBuffer.allocateDirect(BBSIZE);
byte[] readAtOffset(final int offset) throws BufferUnderflowException,
IndexOutOfBoundsException {
byte[] dataRead = new byte[SIZE];
blockMap.position(offset);
blockMap.get(dataRead);
return dataRead;
}
void writeAtOffset(final int offset, final byte[] data)
throws BufferOverflowException, IndexOutOfBoundsException, ReadOnlyBufferException
{
if (data.length != SIZE) {
throw new IllegalArgumentException("Invalid data received");
}
blockMap.position(offset);
blockMap.put(data);
}
public static void main(String[] args) {
ByteBufferTests tests = new ByteBufferTests();
System.out.println("At 0: " + tests.readAtOffset(0));
}
まだバッファに何も書き込んでいないので、これは例外をスローすべきではありませんか? 私は何を間違っていますか?