Как мы можем выделить прямой CharBuffer, если у нас нет соответствующих (allocateDirect) методов в CharBuffer или Buffer? - PullRequest
0 голосов
/ 31 марта 2019

Почему у нас есть метод isDirect() в CharBuffer?

Как мы можем выделить прямой CharBuffer, если у нас нет соответствующих методов (allocateDirect) в CharBuffer или Buffer?

Я могу предположить, что это:

ByteBuffer.alocateDirect(100).asCharBuffer()

Это так, и это единственный (и рекомендуемый) способ сделать это?

1 Ответ

0 голосов
/ 31 марта 2019

CharBuffer наследует этот метод от интерфейса Buffer и многих других.
CharBuffer имеет несколько подклассов

enter image description here

Например, DirectCharBuffer (s) return true.
Этот

ByteBuffer.allocateDirect(20).asCharBuffer();

вернет DirectCharBuffer, то есть CharBuffer.

*Суффикс 1022 * для систем с прямым порядком байтов. Суффикс
*S для других типов (младший порядок). Суффикс
*R для буферов только для чтения.


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

Это так и является ли это единственным ( и рекомендуемым ) способом сделать это?

Да.


Дляссылка, что такое прямой буфер?См. JavaDoc , раздел Прямые и непрямые буферы .

...