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

时间:2019-03-31 16:42:51

标签: java nio bytebuffer charbuffer

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

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

我可能是这样:

ByteBuffer.alocateDirect(100).asCharBuffer()

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

1 个答案:

答案 0 :(得分:0)

CharBuffer继承了Buffer接口中的该方法以及其他许多方法。
CharBuffer有多个子类

enter image description here

例如DirectCharBuffer返回true
这个

ByteBuffer.allocateDirect(20).asCharBuffer();

将返回DirectCharBuffer,即CharBuffer

大尾数系统的

*U后缀。
其他类型的后缀*S(小尾数)。
只读缓冲区的后缀为*R


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

  

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

是的


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