Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class Buffer extends Object
Буфер является линейной, конечной последовательностью элементов определенного типа примитива. Кроме его контента, существенные свойства буфера являются его емкостью, пределом, и позицией:
Емкость буфера является числом элементов, которое она содержит. Емкость буфера никогда не отрицательна и никогда не изменяется.
Предел буфера является индексом первого элемента, который не должен быть считан или записан. Предел буфера никогда не отрицателен и никогда не больше чем его емкость.
Позиция буфера является индексом следующего элемента, который будет считан или записан. Позиция буфера никогда не отрицательна и никогда не больше чем ее предел.
Есть один подкласс этого класса для каждого небулева типа примитива.
Каждый подкласс этого класса определяет две категории, получают и помещают операции:
Относительные операции читают или пишут один или более элементов, запускающихся в текущей позиции, и затем постепенно увеличивают позицию переданным числом элементов. Если требуемая передача превышает предел тогда, родственник получает броски работы a
BufferUnderflowException
и родственник помещенная работа бросает aBufferOverflowException
; в любом случае не передаются никакие данные.Абсолютные операции берут явный индекс элемента и не влияют на позицию. Абсолютный получают и помещают бросок операций
IndexOutOfBoundsException
если индексный параметр превышает предел.
Данные могут также, конечно, быть переданы в или из буфера операциями ввода-вывода соответствующего канала, которые всегда являются относительно текущей позиции.
Метка буфера является индексом, к которому его позиция будет сброшена когда reset
метод вызывается. Метка не всегда определяется, но когда она определяется, это никогда не отрицательно и никогда не больше чем позиция. Если метка определяется тогда, она отбрасывается, когда позиция или предел корректируются к значению, меньшему чем метка. Если метка не определяется, затем вызывая reset
метод вызывает InvalidMarkException
быть брошенным.
Следующий инвариант содержит для метки, позиции, предела, и значений емкости:
0 метка <= позиция <= предел <= емкость <=
У недавно создаваемого буфера всегда есть позиция нуля и метки, которая неопределена. Начальный предел может быть нулем, или это может быть некоторое другое значение, которое зависит от типа буфера и способа, которым это создается. Каждый элемент недавно выделенного буфера инициализируется, чтобы обнулить.
В дополнение к методам для того, чтобы получить доступ к позиции, пределу, и значениям емкости и для маркировки и сброса, этот класс также определяет следующие операции на буферы:
clear()
делает буфер готовым к новой последовательности считанных из канала или родственника помещенные операции: Это устанавливает предел к емкости и позиции, чтобы обнулить.
flip()
делает буфер готовым к новой последовательности записи канала, или родственник получают операции: Это устанавливает предел к текущей позиции и затем обнуляет позицию.
rewind()
делает буфер готовым к перечитыванию данных, которые он уже содержит: Это листы неизменный предел и обнуляет позицию.
Каждый буфер читаем, но не каждый буфер перезаписываемо. Методы мутации каждого буферного класса определяются как дополнительные операции, которые бросят a ReadOnlyBufferException
когда вызвано на буфер только для чтения. Буфер только для чтения не позволяет его контенту быть измененным, но его метка, позиция, и предельные значения изменчивы. Только для чтения ли буфер, может быть определен, вызывая isReadOnly
метод.
Буферы не безопасны для использования многократными параллельными потоками. Если буфер должен использоваться больше чем одним потоком тогда, доступом к буферу должна управлять соответствующая синхронизация.
Методы в этом классе, у которых иначе нет значения, чтобы возвратиться, определяются, чтобы возвратить буфер, на который они вызываются. Это позволяет вызовам метода быть объединенными в цепочку; например, последовательность операторов
может быть заменен единственным, более компактным операторомb.flip(); b.position(23); b.limit(42);
b.flip().position(23).limit(42);
Модификатор и Тип | Метод и Описание |
---|---|
abstract Object |
array()
Возвращает массив, который поддерживает этот буфер (дополнительная работа).
|
abstract int |
arrayOffset()
Возвращает смещение в пределах массива поддержки этого буфера первого элемента буфера (дополнительная работа).
|
int |
capacity()
Возвраты емкость этого буфера.
|
Буфер |
clear()
Очищает этот буфер.
|
Буфер |
flip()
Зеркальные отражения этот буфер.
|
abstract boolean |
hasArray()
Говорит, поддерживается ли этот буфер доступным массивом.
|
boolean |
hasRemaining()
Говорит, есть ли какие-либо элементы между текущей позицией и пределом.
|
abstract boolean |
isDirect()
Говорит, является ли этот буфер прямым.
|
abstract boolean |
isReadOnly()
Говорит, только для чтения ли этот буфер.
|
int |
limit()
Возвраты предел этого буфера.
|
Буфер |
limit(int newLimit)
Устанавливает предел этого буфера.
|
Буфер |
mark()
Наборы метка этого буфера в ее позиции.
|
int |
position()
Возвраты позиция этого буфера.
|
Буфер |
position(int newPosition)
Наборы позиция этого буфера.
|
int |
remaining()
Возвращает число элементов между текущей позицией и пределом.
|
Буфер |
reset()
Сбросы позиция этого буфера к ранее отмеченной позиции.
|
Буфер |
rewind()
Перемотки этот буфер.
|
public final int capacity()
public final int position()
public final Buffer position(int newPosition)
newPosition
- Новое значение позиции; должно быть неотрицательным и не больше чем текущий пределIllegalArgumentException
- Если предварительные условия на newPosition не содержатpublic final int limit()
public final Buffer limit(int newLimit)
newLimit
- Новое предельное значение; должно быть неотрицательным и не больше чем емкость этого буфераIllegalArgumentException
- Если предварительные условия на newLimit не содержатpublic final Buffer mark()
public final Buffer reset()
Вызов этого метода ни не изменяет, ни отбрасывает значение метки.
InvalidMarkException
- Если метка не была установленаpublic final Buffer clear()
Вызовите этот метод перед использованием последовательности считанных из канала или помещенных операций, чтобы заполнить этот буфер. Например:
buf.clear(); // Prepare buffer for reading in.read(buf); // Read data
Этот метод фактически не стирает данные в буфере, но это называют, как будто это сделало, потому что это будет чаще всего использоваться в ситуациях, в которых это могло бы также иметь место.
public final Buffer flip()
После последовательности считанных из канала или помещенных операций вызовите этот метод, чтобы подготовиться к последовательности записи канала, или родственник получают операции. Например:
buf.put(magic); // Prepend header in.read(buf); // Read data into rest of buffer buf.flip(); // Flip buffer out.write(buf); // Write header + data to channel
Этот метод часто используется в соединении с compact
метод, передавая данные от одного места до другого.
public final Buffer rewind()
Вызовите этот метод перед последовательностью записи канала или получите операции, предполагая, что предел был уже установлен соответственно. Например:
out.write(buf); // Write remaining data buf.rewind(); // Rewind buffer buf.get(array); // Copy data into array
public final int remaining()
public final boolean hasRemaining()
public abstract boolean isReadOnly()
public abstract boolean hasArray()
Если этот метод возвращает true тогда array
и arrayOffset
методы могут безопасно быть вызваны.
public abstract Object array()
Этот метод предназначается, чтобы позволить поддержанным массивом буферам быть переданными к собственному коду более эффективно. Конкретные подклассы обеспечивают больше возвращаемых значений со строгим контролем типов для этого метода.
Модификации к контенту этого буфера заставят контент возвращенного массива быть измененным, и наоборот.
Вызовите hasArray
метод прежде, чем вызвать этот метод, чтобы гарантировать, что у этого буфера есть доступный массив поддержки.
ReadOnlyBufferException
- Если этот буфер поддерживается массивом, но только для чтенияUnsupportedOperationException
- Если этот буфер не поддерживается доступным массивомpublic abstract int arrayOffset()
Если этот буфер поддерживается массивом, тогда буферизуют позицию p, соответствует индексу p массива + arrayOffset().
Вызовите hasArray
метод прежде, чем вызвать этот метод, чтобы гарантировать, что у этого буфера есть доступный массив поддержки.
ReadOnlyBufferException
- Если этот буфер поддерживается массивом, но только для чтенияUnsupportedOperationException
- Если этот буфер не поддерживается доступным массивомpublic abstract boolean isDirect()
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.