おそらく私はこれを間違った方法で行っていますが、いくつかの絶対配置メソッドがありませんByteBuffer
。
見てみるとByteBuffer
、ほとんどの put メソッドに絶対バリアントと相対バリアントの両方があることがわかります。
を除いて:
byte
配列の一部を に書き込みますByteBuffer
。ByteBuffer
に aを書き込みByteBuffer
ます。
..そして、まさにそれらが必要です。
明確ByteBuffer
にするために、メソッドがあります:
put(byte[] src, int offset, int length)
put(ByteBuffer src)
しかし欠けています:
put(int index, byte[] src, int offset, int length)
put(int index, ByteBuffer src)
バッファーの位置ポインターを移動したくない理由があるため、絶対配置メソッドのみを使用したいのです。
これらのメソッドが除外された理由は何ですか?
もちろん、バッファの位置ポインタを移動せずに不足しているメソッドを模倣することはできますが、それにはソース バイトのループが必要です。Javadoc は、これらのメソッドが (潜在的に) ループしてバイトを 1 つずつ移動するよりもはるかに効率的であると明確に述べています。私のテストが同じことを示しているので、私は Javadoc を信じています。実装からできるだけ多くの速度を絞り出す必要があるため、もちろん、手に入れることができるバルクメソッドを利用する傾向があります....それらが存在する場合.
ちなみに、部分的なバイト配列を移動するためByteBuffer
の絶対メソッドもありません。get
しかし、私は現在、そのような方法を実際には必要としません。しかし、やはり奇妙なことに、それは存在しません。