Как мы можем выделить прямой CharBuffer, если у нас нет соответствующих (allocateDirect) методов в CharBuffer или Buffer?
Почему у нас isDirect()
метод в CharBuffer?
Как мы можем выделить прямой CharBuffer, если у нас нет соответствующих (allocateDirect) методов в CharBuffer
или же Buffer
?
Я могу догадаться, что это:
ByteBuffer.alocateDirect(100).asCharBuffer()
Это так и это единственный (и рекомендуемый) способ сделать это?
1 ответ
CharBuffer
наследует этот метод от Buffer
интерфейс, со многими другими. CharBuffer
имеет несколько подклассов
Например, DirectCharBuffer
(s) возврат true
,
это
ByteBuffer.allocateDirect(20).asCharBuffer();
вернет DirectCharBuffer
, который является CharBuffer
,
*U
суффикс для систем с прямым порядком байтов. *S
суффикс для других видов (little-endian). *R
суффикс для буферов только для чтения.
final CharBuffer cb = ByteBuffer.allocateDirect(20).asCharBuffer();
final boolean direct = cb.isDirect(); // true
Это так и это единственный (
и рекомендуемый) способ сделать это?
Да.
Для справки, что такое прямой буфер? См. JavaDoc, раздел Прямые и непрямые буферы.