如果我们在`CharBuffer`或`Buffer`中没有任何相应的(allocateDirect)方法,我们如何分配直接的CharBuffer?

问题描述 投票:0回答:1

为什么我们在CharBuffer中有isDirect()方法?

如果我们在CharBufferBuffer中没有任何相应的(allocateDirect)方法,我们如何分配直接的CharBuffer?

我猜可能是:

ByteBuffer.alocateDirect(100).asCharBuffer()

是这样的,它是唯一(和推荐)的方式吗?

java nio bytebuffer charbuffer
1个回答
0
投票

CharBufferBuffer界面继承了该方法,还有许多其他方法。 CharBuffer有多个子类

enter image description here

例如,DirectCharBuffer(s)返回true。 这个

ByteBuffer.allocateDirect(20).asCharBuffer();

将返回DirectCharBuffer,这是一个CharBuffer

*U后缀为big-endian系统。 其他种类的*S后缀(little-endian)。 *R后缀为只读缓冲区。


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

是这样的,它是唯一的( 并推荐 )这样做的方式?

是。


作为参考,什么是直接缓冲?请参阅JavaDoc,直接与非直接缓冲区。

© www.soinside.com 2019 - 2024. All rights reserved.