Buffer Classe

Definição

Um contêiner para dados de um tipo primitivo específico.

[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
Herança
Derivado
Atributos

Comentários

Um contêiner para dados de um tipo primitivo específico.

Um buffer é uma sequência linear e finita de elementos de um tipo primitivo específico. Além de seu conteúdo, as propriedades essenciais de um buffer são sua capacidade, limite e posição:

<blockquote>

A capacidade de um buffer é o número de elementos que ele contém. A capacidade de um buffer nunca é negativa e nunca é alterada.

O limite de um buffer é o índice do primeiro elemento que não deve ser lido ou gravado. O limite de um buffer nunca é negativo e nunca é maior que sua capacidade.

A posição de um buffer é o índice do próximo elemento a ser lido ou gravado. A posição de um buffer nunca é negativa e nunca é maior que seu limite.

</blockquote>

Há uma subclasse dessa classe para cada tipo primitivo não booliano.

<h2> Transferindo dados </h2>

Cada subclasse dessa classe define duas categorias de operações get and put :

<blockquote>

Operações relativas leem ou gravam um ou mais elementos começando na posição atual e incrementam a posição pelo número de elementos transferidos. Se a transferência solicitada exceder o limite, uma operação de obtenção relativa gerará uma BufferUnderflowException operação de colocação relativa e uma operação de colocação relativa gerará uma BufferOverflowException; em ambos os casos, nenhum dado será transferido.

As operações absolutas assumem um índice de elemento explícito e não afetam a posição. As operações de obtenção e colocação absoluta geram um IndexOutOfBoundsException caso o argumento de índice exceda o limite.

</blockquote>

Os dados também podem, naturalmente, ser transferidos para ou para fora de um buffer pelas operações de E/S de um canal apropriado, que são sempre relativas à posição atual.

<h2> Marcando e redefinindo </h2>

A marca de um buffer é o índice para o qual sua posição será redefinida quando o #reset reset método for invocado. A marca nem sempre é definida, mas quando é definida nunca é negativa e nunca é maior que a posição. Se a marca for definida, ela será descartada quando a posição ou o limite for ajustado para um valor menor que a marca. Se a marca não estiver definida, invocar o #reset reset método fará com que um InvalidMarkException seja gerado.

<h2> Invariantes </h2>

As seguintes retenções invariáveis para os valores de marca, posição, limite e capacidade:

<blockquote><=0mark<=position<=limit<=capacity</blockquote>

Um buffer recém-criado sempre tem uma posição de zero e uma marca indefinida. O limite inicial pode ser zero ou pode ser algum outro valor que depende do tipo do buffer e da maneira como ele é construído. Cada elemento de um buffer recém-alocado é inicializado como zero.

<h2> Operações <adicionais /h2>

Além dos métodos para acessar os valores de posição, limite e capacidade e para marcar e redefinir, essa classe também define as seguintes operações em buffers:

<ul>

<li>

#clear torna um buffer pronto para uma nova sequência de operações de leitura de canal ou de colocação relativa: ele define o limite para a capacidade e a posição como zero.

</li>

<li>

#flip torna um buffer pronto para uma nova sequência de operações de gravação de canal ou de obtenção relativa: ele define o limite para a posição atual e define a posição como zero.

</li>

<li>

#rewind torna um buffer pronto para relançar os dados que ele já contém: ele deixa o limite inalterado e define a posição como zero.

</li>

<li>

Os #slice métodos e #slice(int,int) slice(index,length) os métodos criam uma subsequência de um buffer: eles deixam o limite e a posição inalteradas.

</li>

<li>

#duplicate cria uma cópia superficial de um buffer: ele deixa o limite e a posição inalterada.

</li>

</ul>

<buffers >somente leitura h2< /h2>

Cada buffer é legível, mas nem todos os buffers são graváveis. Os métodos de mutação de cada classe de buffer são especificados como operações opcionais que lançarão um ReadOnlyBufferException quando invocado em um buffer somente leitura. Um buffer somente leitura não permite que seu conteúdo seja alterado, mas seus valores de marca, posição e limite são mutáveis. Se um buffer é ou não somente leitura pode ser determinado invocando seu #isReadOnly isReadOnly método.

<h2> Segurança <de thread /h2>

Os buffers não são seguros para uso por vários threads simultâneos. Se um buffer deve ser usado por mais de um thread, o acesso ao buffer deverá ser controlado pela sincronização apropriada.

<h2> Encadeamento de <invocação /h2>

Métodos nessa classe que, de outra forma, não têm um valor a ser retornado são especificados para retornar o buffer no qual são invocados. Isso permite que invocações de método sejam encadeadas; por exemplo, a sequência de instruções

<blockquote>

b.flip();
            b.position(23);
            b.limit(42);

</blockquote>

pode ser substituído pela instrução única e mais compacta

<blockquote>

b.flip().position(23).limit(42);

</blockquote>

Adicionado em 1.4.

Java documentação para java.nio.Buffer.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usadas de acordo com os termos descritos na Licença de Atribuição Creative Commons 2.5.

Construtores

Nome Description
Buffer(IntPtr, JniHandleOwnership)

Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo runtime.

Propriedades

Nome Description
Class

Retorna a classe de runtime deste Object.

(Herdado de Object)
Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
HasArray

Retorna true se array e arrayOffset não é lançado.

HasRemaining

Informa se há elementos entre a posição atual e o limite.

IsDirect

Retornará true se este for um buffer direto.

IsReadOnly

Indica se esse buffer é somente leitura.

JniIdentityHashCode

Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade.

(Herdado de Object)
JniManagedPeerState

Um contêiner para dados de um tipo primitivo específico.

(Herdado de JavaObject)
JniPeerMembers

Um contêiner para dados de um tipo primitivo específico.

PeerReference

Obtém a referência de objeto JNI para este par Java.

(Herdado de Object)
ThresholdClass

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

Métodos

Nome Description
ArrayOffset()

Retorna o deslocamento dentro da matriz de backup desse buffer do primeiro elemento do buffer    (operação opcional).

Capacity()

Retorna a capacidade desse buffer.

Clear()

Limpa esse buffer.

Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Um contêiner para dados de um tipo primitivo específico.

(Herdado de JavaObject)
Dispose()

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
Dispose(Boolean)

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
DisposeUnlessReferenced()

Um contêiner para dados de um tipo primitivo específico.

(Herdado de JavaObject)
Duplicate()

Cria um novo buffer que compartilha o conteúdo desse buffer.

Equals(Object)

Um contêiner para dados de um tipo primitivo específico.

(Herdado de JavaObject)
Equals(Object)

Indica se algum outro objeto é "igual a" este.

(Herdado de Object)
Flip()

Inverte esse buffer.

GetDirectBufferAddress()

Um contêiner para dados de um tipo primitivo específico.

GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
Limit()

Retorna o limite desse buffer.

Limit(Int32)

Define o limite desse buffer.

Mark()

Define a marca desse buffer em sua posição.

Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
Position()

Retorna a posição desse buffer.

Position(Int32)

Define a posição desse buffer.

Remaining()

Retorna o número de elementos entre a posição atual e o limite.

Reset()

Redefine a posição desse buffer para a posição marcada anteriormente.

Rewind()

Retrocede esse buffer.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle

(Herdado de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Um contêiner para dados de um tipo primitivo específico.

(Herdado de JavaObject)
Slice()

Cria um novo buffer cujo conteúdo é uma subsequência compartilhada do conteúdo desse buffer.

Slice(Int32, Int32)

Cria um novo buffer cujo conteúdo é uma subsequência compartilhada do conteúdo desse buffer.

ToArray<T>()

Cria uma matriz gerenciada com base nesse wrapper de matriz Java.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Cancela o registro desse par Java do runtime de interoperabilidade.

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<>

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)

Implantações explícitas de interface

Nome Description
IJavaPeerable.Disposed()

Um contêiner para dados de um tipo primitivo específico.

(Herdado de JavaObject)
IJavaPeerable.Finalized()

Um contêiner para dados de um tipo primitivo específico.

(Herdado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Um contêiner para dados de um tipo primitivo específico.

(Herdado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Um contêiner para dados de um tipo primitivo específico.

(Herdado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Um contêiner para dados de um tipo primitivo específico.

(Herdado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Um contêiner para dados de um tipo primitivo específico.

(Herdado de JavaObject)

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo marcada por runtime do Android.

JavaCast<TResult>(IJavaObject)

Um contêiner para dados de um tipo primitivo específico.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a