Язык

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

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

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

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

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

Возвращает значение true, если array и arrayOffset не будет вызываться.

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 типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

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

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

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