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 вызывает BufferOverflowException исключение; в любом случае данные не передаются.
Абсолютные операции принимают явный индекс элемента и не влияют на позицию. Абсолютные операции получения и вставки вызывают исключение IndexOutOfBoundsException, если аргумент индекса превышает ограничение.
</blockquote>
Данные также могут быть переданы в буфер или из буфера операциями ввода-вывода соответствующего канала, которые всегда связаны с текущей позицией.
<h2> Маркировка <и сброс /h2>
Знак буфера — это индекс, в который будет сбрасываться его положение при #reset reset вызове метода. Метка не всегда определена, но если она определена, она никогда не является отрицательной и никогда не превышает позицию. Если метка определена, то она удаляется при изменении позиции или ограничения на значение меньше, чем знак. Если метка не определена, вызов #reset reset метода вызывает InvalidMarkException исключение.
<h2> Инварианты </h2>
Следующие инвариантные удержания для метки, позиции, ограничения и значений емкости:
<blockquote><=0mark<=position<=limit<=capacity</blockquote>
Только что созданный буфер всегда имеет позицию нуля и знак, который не определен. Начальное ограничение может быть нулевым или может быть другим значением, которое зависит от типа буфера и способа его создания. Каждый элемент недавно выделенного буфера инициализируется до нуля.
<h2 Дополнительные операции >/h2<>
Помимо методов доступа к позициям, ограничениям и значениям емкости, а также для маркировки и сброса, этот класс также определяет следующие операции при буферах:
<Ул>
<li>
#clear делает буфер готов к новой последовательности операций чтения или относительного размещения канала: задает ограничение емкости и положение равно нулю.
</li>
<li>
#flip делает буфер готов к новой последовательности операций записи канала или относительного получения : задает ограничение текущей позиции, а затем задает положение нулевой.
</li>
<li>
#rewind делает буфер готов к повторному чтению данных, которые он уже содержит: он оставляет ограничение без изменений и задает положение нулевой.
</li>
<li>
#slice Методы #slice(int,int) slice(index,length) создают подсезону буфера: они покидают предел и позицию без изменений.
</li>
<li>
#duplicate создает неглубокую копию буфера: она оставляет предел и положение без изменений.
</li>
</ul>
< > буферы <только для чтения /h2>
Каждый буфер доступен для чтения, но не каждый буфер доступен для записи. Методы мутации каждого класса буфера указываются как необязательные операции , которые будут вызываться ReadOnlyBufferException при вызове буфера только для чтения. Буфер, доступный только для чтения, не позволяет изменять его содержимое, но его отметка, позиция и предельные значения изменяются. Определяется ли буфер только для чтения путем вызова метода #isReadOnly isReadOnly .
<h2> Thread Safety </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.
Конструкторы
| Имя. | Описание |
|---|---|
| Buffer(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
Свойства
| Имя. | Описание |
|---|---|
| Class |
Возвращает класс среды выполнения этого |
| Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
| HasArray |
Возвращает значение true, если |
| HasRemaining |
Указывает, есть ли элементы между текущей позицией и ограничением. |
| IsDirect |
Возвращает значение true, если это прямой буфер. |
| IsReadOnly |
Указывает, доступен ли этот буфер только для чтения. |
| JniIdentityHashCode |
Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия. (Унаследовано от Object) |
| JniManagedPeerState |
Контейнер для данных определенного примитивного типа. (Унаследовано от JavaObject) |
| JniPeerMembers |
Контейнер для данных определенного примитивного типа. |
| PeerReference |
Возвращает ссылку на объект JNI для этого Java однорангового узла. (Унаследовано от Object) |
| ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
| ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Методы
| Имя. | Описание |
|---|---|
| ArrayOffset() |
Возвращает смещение в резервном массиве этого буфера первого элемента буфера > (необязательная операция). |
| Capacity() |
Возвращает емкость этого буфера. |
| Clear() |
Очищает этот буфер. |
| Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Контейнер для данных определенного примитивного типа. (Унаследовано от JavaObject) |
| Dispose() |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| Dispose(Boolean) |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| DisposeUnlessReferenced() |
Контейнер для данных определенного примитивного типа. (Унаследовано от JavaObject) |
| Duplicate() |
Создает новый буфер, который предоставляет общий доступ к содержимому этого буфера. |
| Equals(Object) |
Контейнер для данных определенного примитивного типа. (Унаследовано от JavaObject) |
| 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) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Контейнер для данных определенного примитивного типа. (Унаследовано от JavaObject) |
| Slice() |
Создает новый буфер, содержимое которого является общим вложенным значением содержимого этого буфера. |
| Slice(Int32, Int32) |
Создает новый буфер, содержимое которого является общим вложенным значением содержимого этого буфера. |
| ToArray<T>() |
Создает управляемый массив из этого Java оболочки массива. (Унаследовано от Object) |
| ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
| UnregisterFromRuntime() |
Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия. (Унаследовано от Object) |
| Wait() |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>помощи уведомления</em> или <эм>прерванного</em>. (Унаследовано от Object) |
| Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
| Wait(Int64) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя. | Описание |
|---|---|
| IJavaPeerable.Disposed() |
Контейнер для данных определенного примитивного типа. (Унаследовано от JavaObject) |
| IJavaPeerable.Finalized() |
Контейнер для данных определенного примитивного типа. (Унаследовано от JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Контейнер для данных определенного примитивного типа. (Унаследовано от JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Контейнер для данных определенного примитивного типа. (Унаследовано от JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Контейнер для данных определенного примитивного типа. (Унаследовано от JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Контейнер для данных определенного примитивного типа. (Унаследовано от JavaObject) |
Методы расширения
| Имя. | Описание |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Возвращает имя JNI типа экземпляра |
| JavaAs<TResult>(IJavaPeerable) |
Попробуйте принуждать к типу |
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
Контейнер для данных определенного примитивного типа. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Попробуйте принуждать к типу |