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

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

我可能是这样的:

ByteBuffer.alocateDirect(100).asCharBuffer()


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

最佳答案

CharBuffer以及许多其他方法都从Buffer接口继承该方法。
CharBuffer具有多个子类

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

例如,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,直接缓冲区与非直接缓冲区。

关于java - 如果我们在CharBuffer或Buffer中没有相应的(allocateDirect)方法,我们如何分配直接的CharBuffer?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55443117/

10-10 13:02