0

isDirect()CharBufferにメソッドがあるのはなぜ ですか?

またはにそれぞれの (allocateDirect) メソッドがない場合、どのように直接 CharBuffer を割り当てることができますCharBufferBuffer?

私はそれが次のように推測するかもしれません:

ByteBuffer.alocateDirect(100).asCharBuffer()

これはそうですか、それを行う唯一の(そして推奨される)方法ですか?

4

1 に答える 1

1

CharBufferインターフェースからそのメソッドを継承し、Buffer他の多くのメソッドも継承します。
CharBuffer複数のサブクラスを持つ

ここに画像の説明を入力

たとえば、DirectCharBuffer(s) return true.
これ

ByteBuffer.allocateDirect(20).asCharBuffer();

を返します。DirectCharBufferこれはCharBufferです。

*Uビッグエンディアン システムのサフィックス。
*S他の種類のサフィックス (リトルエンディアン)。
*R読み取り専用バッファーのサフィックス。


final CharBuffer cb = ByteBuffer.allocateDirect(20).asCharBuffer();
final boolean direct = cb.isDirect();  // true

これはそうですか、それを行う唯一の(そして推奨される)方法ですか?

はい。


参考までにダイレクトバッファとは?JavaDocのセクションDirect vs. non-direct buffersを参照してください。

于 2019-03-31T16:52:17.260 に答える