Как мы можем выделить прямой 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, раздел Прямые и непрямые буферы.

Другие вопросы по тегам