Buffer Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
| Handle |
O identificador para a instância subjacente do Android. (Herdado de Object) |
| HasArray |
Retorna true se |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| 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 |