Buffer Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Contenitore per i dati di un tipo primitivo specifico.
[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
- Ereditarietà
- Derivato
- Attributi
Commenti
Contenitore per i dati di un tipo primitivo specifico.
Un buffer è una sequenza lineare e finita di elementi di un tipo primitivo specifico. Oltre al contenuto, le proprietà essenziali di un buffer sono la capacità, il limite e la posizione:
<blockquote>
La capacità di un buffer è il numero di elementi che contiene. La capacità di un buffer non è mai negativa e non cambia mai.
Il limite di un buffer è l'indice del primo elemento che non deve essere letto o scritto. Il limite di un buffer non è mai negativo e non è mai maggiore della sua capacità.
La posizione di un buffer è l'indice dell'elemento successivo da leggere o scrivere. La posizione di un buffer non è mai negativa e non è mai maggiore del limite.
</blockquote>
Esiste una sottoclasse di questa classe per ogni tipo primitivo non booleano.
<h2> Trasferimento di dati </h2>
Ogni sottoclasse di questa classe definisce due categorie di operazioni get e put :
<blockquote>
Le operazioni relative leggono o scrivono uno o più elementi a partire dalla posizione corrente e quindi incrementano la posizione in base al numero di elementi trasferiti. Se il trasferimento richiesto supera il limite, un'operazione get relativa genera un'eccezione BufferUnderflowException e un'operazione put relativa genera un'eccezione BufferOverflowException; in entrambi i casi, non viene trasferito alcun dato.
Le operazioni assolute accettano un indice di elemento esplicito e non influiscono sulla posizione. Le operazioni get e putassolute generano un'eccezione IndexOutOfBoundsException se l'argomento indice supera il limite.
</blockquote>
I dati possono anche essere trasferiti all'interno o all'esterno di un buffer dalle operazioni di I/O di un canale appropriato, che sono sempre relative alla posizione corrente.
<h2> Contrassegno e reimpostazione <di /h2>
Il contrassegno di un buffer è l'indice a cui verrà reimpostata la posizione quando viene richiamato il #reset reset metodo. Il contrassegno non è sempre definito, ma quando viene definito non è mai negativo e non è mai maggiore della posizione. Se il contrassegno viene definito, viene rimosso quando la posizione o il limite viene regolato su un valore inferiore al contrassegno. Se il contrassegno non è definito, richiamando il #reset reset metodo viene generata un'eccezione InvalidMarkException .
<h2> Invariants </h2>
I seguenti blocchi invarianti per i valori di contrassegno, posizione, limite e capacità:
<blockquote>0<=mark position<=<=limit<=capacity</blockquote>
Un buffer appena creato ha sempre una posizione pari a zero e un contrassegno non definito. Il limite iniziale può essere zero oppure può essere un altro valore che dipende dal tipo del buffer e dal modo in cui viene costruito. Ogni elemento di un buffer appena allocato viene inizializzato su zero.
<h2> Operazioni aggiuntive </h2>
Oltre ai metodi per accedere ai valori di posizione, limite e capacità e per contrassegnare e reimpostare, questa classe definisce anche le operazioni seguenti sui buffer:
<ul>
<li>
#clear rende un buffer pronto per una nuova sequenza di operazioni put relative o di lettura canale: imposta il limite sulla capacità e la posizione su zero.
</li>
<li>
#flip rende un buffer pronto per una nuova sequenza di operazioni get relative o di scrittura del canale: imposta il limite sulla posizione corrente e quindi imposta la posizione su zero.
</li>
<li>
#rewind rende un buffer pronto per la rilettura dei dati già contenuti: lascia invariato il limite e imposta la posizione su zero.
</li>
<li>
I #slice metodi e #slice(int,int) slice(index,length) creano una sottosequenza di un buffer: lasciano invariato il limite e la posizione.
</li>
<li>
#duplicate crea una copia superficiale di un buffer: lascia invariato il limite e la posizione.
</li>
</ul>
<h2> Buffer di <sola lettura /h2>
Ogni buffer è leggibile, ma non tutti i buffer sono scrivibili. I metodi di mutazione di ogni classe buffer vengono specificati come operazioni facoltative che generano un'eccezione ReadOnlyBufferException quando viene richiamata su un buffer di sola lettura. Un buffer di sola lettura non consente la modifica del contenuto, ma i valori di contrassegno, posizione e limite sono modificabili. Indica se un buffer è di sola lettura può essere determinato richiamando il relativo #isReadOnly isReadOnly metodo.
<h2> Thread safety </h2>
I buffer non sono sicuri per l'uso da parte di più thread simultanei. Se un buffer deve essere usato da più thread, l'accesso al buffer deve essere controllato dalla sincronizzazione appropriata.
<concatenamento >delle chiamate h2< /h2>
I metodi in questa classe che non dispongono di un valore da restituire vengono specificati per restituire il buffer su cui vengono richiamati. In questo modo è possibile concatenare le chiamate al metodo; Ad esempio, la sequenza di istruzioni
<blockquote>
b.flip();
b.position(23);
b.limit(42);
</blockquote>
può essere sostituito dalla singola istruzione più compatta
<blockquote>
b.flip().position(23).limit(42);
</blockquote>
Aggiunta nella versione 1.4.
Documentazione java per java.nio.Buffer.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.
Costruttori
| Nome | Descrizione |
|---|---|
| Buffer(IntPtr, JniHandleOwnership) |
Costruttore usato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime. |
Proprietà
| Nome | Descrizione |
|---|---|
| Class |
Restituisce la classe di runtime di questo |
| Handle |
Handle per l'istanza di Android sottostante. (Ereditato da Object) |
| HasArray |
Restituisce true se |
| HasRemaining |
Indica se sono presenti elementi tra la posizione corrente e il limite. |
| IsDirect |
Restituisce true se si tratta di un buffer diretto. |
| IsReadOnly |
Indica se il buffer è di sola lettura. |
| JniIdentityHashCode |
Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità. (Ereditato da Object) |
| JniManagedPeerState |
Contenitore per i dati di un tipo primitivo specifico. (Ereditato da JavaObject) |
| JniPeerMembers |
Contenitore per i dati di un tipo primitivo specifico. |
| PeerReference |
Ottiene il riferimento all'oggetto JNI per questo peer Java. (Ereditato da Object) |
| ThresholdClass |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. |
| ThresholdType |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. |
Metodi
| Nome | Descrizione |
|---|---|
| ArrayOffset() |
Restituisce l'offset all'interno della matrice di backup del buffer del primo elemento del buffer (operazione facoltativa). |
| Capacity() |
Restituisce la capacità del buffer. |
| Clear() |
Cancella questo buffer. |
| Clone() |
Crea e restituisce una copia di questo oggetto. (Ereditato da Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Contenitore per i dati di un tipo primitivo specifico. (Ereditato da JavaObject) |
| Dispose() |
Rilascia le risorse contenute in questo peer Java. (Ereditato da Object) |
| Dispose(Boolean) |
Rilascia le risorse contenute in questo peer Java. (Ereditato da Object) |
| DisposeUnlessReferenced() |
Contenitore per i dati di un tipo primitivo specifico. (Ereditato da JavaObject) |
| Duplicate() |
Crea un nuovo buffer che condivide il contenuto del buffer. |
| Equals(Object) |
Contenitore per i dati di un tipo primitivo specifico. (Ereditato da JavaObject) |
| Equals(Object) |
Indica se un altro oggetto è "uguale a" questo. (Ereditato da Object) |
| Flip() |
Capovolge questo buffer. |
| GetDirectBufferAddress() |
Contenitore per i dati di un tipo primitivo specifico. |
| GetHashCode() |
Restituisce un valore del codice hash per l'oggetto. (Ereditato da Object) |
| JavaFinalize() |
Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto . (Ereditato da Object) |
| Limit() |
Restituisce il limite del buffer. |
| Limit(Int32) |
Imposta il limite del buffer. |
| Mark() |
Imposta il contrassegno del buffer in corrispondenza della posizione. |
| Notify() |
Riattiva un singolo thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
| NotifyAll() |
Riattiva tutti i thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
| Position() |
Restituisce la posizione del buffer. |
| Position(Int32) |
Imposta la posizione del buffer. |
| Remaining() |
Restituisce il numero di elementi tra la posizione corrente e il limite. |
| Reset() |
Reimposta la posizione del buffer nella posizione contrassegnata in precedenza. |
| Rewind() |
Riavvolge questo buffer. |
| SetHandle(IntPtr, JniHandleOwnership) |
Imposta la proprietà Handle. (Ereditato da Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Contenitore per i dati di un tipo primitivo specifico. (Ereditato da JavaObject) |
| Slice() |
Crea un nuovo buffer il cui contenuto è una sottosequenza condivisa del contenuto del buffer. |
| Slice(Int32, Int32) |
Crea un nuovo buffer il cui contenuto è una sottosequenza condivisa del contenuto del buffer. |
| ToArray<T>() |
Crea una matrice gestita da questo wrapper di matrice Java. (Ereditato da Object) |
| ToString() |
Restituisce una rappresentazione di stringa dell'oggetto. (Ereditato da Object) |
| UnregisterFromRuntime() |
Annulla la registrazione di questo Java peer dal runtime di interoperabilità. (Ereditato da Object) |
| Wait() |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>. (Ereditato da Object) |
| Wait(Int64, Int32) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
| Wait(Int64) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IJavaPeerable.Disposed() |
Contenitore per i dati di un tipo primitivo specifico. (Ereditato da JavaObject) |
| IJavaPeerable.Finalized() |
Contenitore per i dati di un tipo primitivo specifico. (Ereditato da JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Contenitore per i dati di un tipo primitivo specifico. (Ereditato da JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Contenitore per i dati di un tipo primitivo specifico. (Ereditato da JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Contenitore per i dati di un tipo primitivo specifico. (Ereditato da JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Contenitore per i dati di un tipo primitivo specifico. (Ereditato da JavaObject) |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ottiene il nome JNI del tipo dell'istanza |
| JavaAs<TResult>(IJavaPeerable) |
Provare a digitare |
| JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo di tipo controllato dal runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Contenitore per i dati di un tipo primitivo specifico. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Provare a digitare |