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
Наследование
Buffer
Производный
Атрибуты

Комментарии

Контейнер для данных определенного примитивного типа.

Буфер — это линейная конечная последовательность элементов определенного примитивного типа. Помимо содержимого, основными свойствами буфера являются его емкость, ограничение и положение:

<blockquote>

Емкость буфера — это количество содержащихся в нем элементов. Емкость буфера никогда не является отрицательной и никогда не изменяется.

Предел буфера — это индекс первого элемента, который не должен быть прочитан или записан. Предел буфера никогда не является отрицательным и никогда не превышает его емкость.

Позиция буфера — это индекс следующего элемента для чтения или записи. Позиция буфера никогда не является отрицательной и никогда не превышает предел.

</blockquote>

Существует один подкласс этого класса для каждого нелогического примитивного типа.

<h2> Передача данных </h2>

Каждый подкласс этого класса определяет две категории операций get и put :

<blockquote>

Относительные операции считывают или записывают один или несколько элементов, начиная с текущей позиции, а затем увеличивают положение на количество переданных элементов. Если запрошенная передача превышает ограничение, то относительная операция получения создает BufferUnderflowException исключение , а относительная операция putBufferOverflowException; в любом случае данные не передаются.

Абсолютные операции принимают явный индекс элемента и не влияют на позицию. Абсолютные операции get и put вызывают исключение , IndexOutOfBoundsException если аргумент индекса превышает ограничение.

</blockquote>

Данные также могут передаваться в буфер или из него операциями ввода-вывода соответствующего канала, которые всегда находятся относительно текущей позиции.

<h2> Маркировка и сброс </h2>

Метка буфера — это индекс, до которого при вызове #reset reset метода будет сброшена его позиция. Метка не всегда определена, но если она определена, она никогда не является отрицательной и никогда не больше позиции. Если метка определена, она отбрасывается при корректировке позиции или предела на значение, меньшее отметки. Если метка не определена #reset reset , вызов метода вызывает InvalidMarkException исключение .

<h2> Инварианты </h2>

Следующие инвариантные удержания для значений метки, позиции, ограничения и емкости:

<blockquote>0&lt;=mark&lt;=limit&lt;=&lt;=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

Возвращает класс среды выполнения данного объекта Object.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
HasArray

Возвращает значение true, если array и arrayOffset не вызывают исключение.

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)

Контейнер для данных определенного примитивного типа.

Применяется к