#java #nio #bytebuffer #charbuffer
#java #nio #bytebuffer #буфер обмена #charbuffer
Вопрос:
Почему у нас есть isDirect()
метод в CharBuffer?
Как мы можем выделить прямой CharBuffer, если у нас нет никаких соответствующих методов (allocateDirect) в CharBuffer
или Buffer
?
Я могу предположить, что это:
ByteBuffer.alocateDirect(100).asCharBuffer()
Так ли это и является ли это единственным (и рекомендуемым) способом сделать это?
Комментарии:
1. Символ не является байтом в Java
2. Я добавил объяснение для суффиксов U / S / R.
3. Вам нужны другие разъяснения?
Ответ №1:
CharBuffer
наследует этот метод от Buffer
интерфейса вместе со многими другими.
CharBuffer
имеет несколько подклассов
Например, DirectCharBuffer
(ы) возврат true
.
Это
ByteBuffer.allocateDirect(20).asCharBuffer();
вернет a DirectCharBuffer
, который является a CharBuffer
.
*U
суффикс для систем с большим окончанием.
*S
суффикс для других типов (строчный).
*R
суффикс для буферов, доступных только для чтения.
final CharBuffer cb = ByteBuffer.allocateDirect(20).asCharBuffer();
final boolean direct = cb.isDirect(); // true
Так ли это и является ли это единственным (
и рекомендуемым) способом сделать это?
ДА.
Для справки, что такое прямой буфер? Смотрите JavaDoc, раздел Прямые и непрямые буферы.