Buffer Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Контейнер для данных определенного примитивного типа.
[Android.Runtime.Register("java/nio/Buffer", DoNotGenerateAcw=true)]
public abstract class Buffer : Java.Lang.Object
[<Android.Runtime.Register("java/nio/Buffer", DoNotGenerateAcw=true)>]
type Buffer = class
inherit Object
- Наследование
- Производный
- Атрибуты
Комментарии
Контейнер для данных определенного примитивного типа.
Буфер — это линейная конечная последовательность элементов определенного примитивного типа. Помимо содержимого, основными свойствами буфера являются его емкость, ограничение и положение:
<blockquote>
Емкость буфера — это количество содержащихся в нем элементов. Емкость буфера никогда не является отрицательной и никогда не изменяется.
Предел буфера — это индекс первого элемента, который не должен быть прочитан или записан. Предел буфера никогда не является отрицательным и никогда не превышает его емкость.
Позиция буфера — это индекс следующего элемента для чтения или записи. Позиция буфера никогда не является отрицательной и никогда не превышает предел.
</blockquote>
Существует один подкласс этого класса для каждого нелогического примитивного типа.
<h2> Передача данных </h2>
Каждый подкласс этого класса определяет две категории операций get и put :
<blockquote>
Относительные операции считывают или записывают один или несколько элементов, начиная с текущей позиции, а затем увеличивают положение на количество переданных элементов. Если запрошенная передача превышает ограничение, то относительная операция получения создает BufferUnderflowException
исключение , а относительная операция put — BufferOverflowException
; в любом случае данные не передаются.
Абсолютные операции принимают явный индекс элемента и не влияют на позицию. Абсолютные операции get и put вызывают исключение , IndexOutOfBoundsException
если аргумент индекса превышает ограничение.
</blockquote>
Данные также могут передаваться в буфер или из него операциями ввода-вывода соответствующего канала, которые всегда находятся относительно текущей позиции.
<h2> Маркировка и сброс </h2>
Метка буфера — это индекс, до которого при вызове #reset reset
метода будет сброшена его позиция. Метка не всегда определена, но если она определена, она никогда не является отрицательной и никогда не больше позиции. Если метка определена, она отбрасывается при корректировке позиции или предела на значение, меньшее отметки. Если метка не определена #reset reset
, вызов метода вызывает InvalidMarkException
исключение .
<h2> Инварианты </h2>
Следующие инвариантные удержания для значений метки, позиции, ограничения и емкости:
<blockquote>0
<=
mark<=
limit<=
<=
capacity</blockquote>
Вновь созданный буфер всегда имеет нулевое положение и метку, которая не определена. Начальное ограничение может быть равным нулю или другим значением, которое зависит от типа буфера и способа его создания. Каждый элемент вновь выделенного буфера инициализируется нулевым значением.
<h2> Очистка, пролистывание и перемотка </h2>
Помимо методов для доступа к значениям позиции, ограничения и емкости, а также для маркировки и сброса, этот класс также определяет следующие операции с буферами:
<ul>
<Литий>
#clear
делает буфер готовым для новой последовательности операций чтения по каналу или относительного размещения : устанавливает ограничение емкости, а положение — нулевым.
</Литий>
<Литий>
#flip
делает буфер готовым для новой последовательности операций записи по каналу или относительной операции получения . Он устанавливает ограничение текущей позиции, а затем устанавливает положение в нулевое значение.
</Литий>
<Литий>
#rewind
делает буфер готовым к повторному чтению данных, которые он уже содержит: он оставляет ограничение без изменений и устанавливает положение в нулевое значение.
</Литий>
</ul>
<h2> буферы только для <чтения /h2>
Каждый буфер доступен для чтения, но не каждый буфер доступен для записи. Методы изменения каждого класса буфера указываются как необязательные операции , которые будут вызывать ReadOnlyBufferException
при вызове в буфере только для чтения. Буфер только для чтения не допускает изменения содержимого, но значения метки, позиции и предела являются изменяемыми. Является ли буфер доступен только для чтения, можно определить, вызвав его #isReadOnly isReadOnly
метод .
<h2> Потокобезопасность </h2>
Буферы не являются безопасными для использования несколькими параллельными потоками. Если буфер должен использоваться несколькими потоками, доступ к буферу должен контролироваться с помощью соответствующей синхронизации.
<h2> Цепочка вызовов </h2>
Методы этого класса, которые не имеют возвращаемого значения, указываются для возврата буфера, в котором они вызываются. Это позволяет связывать вызовы методов в цепочку; например, последовательность операторов
<blockquote>
b.flip();
b.position(23);
b.limit(42);
</blockquote>
можно заменить одним, более компактным оператором
<blockquote>
b.flip().position(23).limit(42);
</blockquote>
Добавлено в версии 1.4.
Документация по Java для java.nio.Buffer
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
Конструкторы
Buffer(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
Свойства
Class |
Возвращает класс среды выполнения данного объекта |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
HasArray |
Возвращает значение true, если |
HasRemaining |
Указывает, есть ли элементы между текущей позицией и ограничением. |
IsDirect |
Возвращает значение true, если это прямой буфер. |
IsReadOnly |
Указывает, доступен ли этот буфер только для чтения. |
JniIdentityHashCode |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
JniPeerMembers |
Контейнер для данных определенного примитивного типа. |
PeerReference |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Методы
ArrayOffset() |
Возвращает смещение в резервном массиве этого буфера первого элемента буфера (необязательная операция).. |
Capacity() |
Возвращает емкость этого буфера. |
Clear() |
Очищает этот буфер. |
Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
Dispose() |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
Dispose(Boolean) |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
Duplicate() |
Создает новый буфер, который использует содержимое этого буфера. |
Equals(Object) |
Указывает, равен ли какой-то другой объект этому объекту. (Унаследовано от Object) |
Flip() |
Переворачивает этот буфер. |
GetDirectBufferAddress() |
Контейнер для данных определенного примитивного типа. |
GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
JavaFinalize() |
Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект . (Унаследовано от Object) |
Limit() |
Возвращает предел этого буфера. |
Limit(Int32) |
Задает предел этого буфера. |
Mark() |
Задает метку этого буфера в его позиции. |
Notify() |
Пробуждение одного потока, ожидающего на мониторе этого объекта. (Унаследовано от Object) |
NotifyAll() |
Активирует все потоки, ожидающие на мониторе этого объекта. (Унаследовано от Object) |
Position() |
Возвращает позицию этого буфера. |
Position(Int32) |
Задает положение этого буфера. |
Remaining() |
Возвращает количество элементов между текущей позицией и ограничением. |
Reset() |
Сбрасывает позицию этого буфера до ранее помеченной позиции. |
Rewind() |
Перемотка этого буфера. |
SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
Slice() |
Создает новый буфер, содержимое которого является общей вложенностью содержимого этого буфера. |
Slice(Int32, Int32) |
Создает новый буфер, содержимое которого является общей вложенностью содержимого этого буфера. |
ToArray<T>() |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
UnregisterFromRuntime() |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
Wait() |
Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>. (Унаследовано от Object) |
Wait(Int64) |
Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени. (Унаследовано от Object) |
Wait(Int64, Int32) |
Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
IJavaPeerable.Disposed() |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
IJavaPeerable.Finalized() |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
IJavaPeerable.JniManagedPeerState |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Контейнер для данных определенного примитивного типа. (Унаследовано от Object) |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверенное средой выполнения Android. |
JavaCast<TResult>(IJavaObject) |
Контейнер для данных определенного примитивного типа. |
GetJniTypeName(IJavaPeerable) |
Контейнер для данных определенного примитивного типа. |