Buffer Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ein Container für Daten eines bestimmten Grundtyps.
[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
- Vererbung
- Abgeleitet
- Attribute
Hinweise
Ein Container für Daten eines bestimmten Grundtyps.
Ein Puffer ist eine lineare, endliche Abfolge von Elementen eines bestimmten Grundtyps. Neben dem Inhalt sind die wesentlichen Eigenschaften eines Puffers die Kapazität, begrenzung und Position:
<Blockquote>
Die Kapazität eines Puffers ist die Anzahl der darin enthaltenen Elemente. Die Kapazität eines Puffers ist nie negativ und ändert sich nie.
Der Grenzwert eines Puffers ist der Index des ersten Elements, das nicht gelesen oder geschrieben werden soll. Der Grenzwert eines Puffers ist nie negativ und ist nie größer als seine Kapazität.
Die Position eines Puffers ist der Index des nächsten Elements, das gelesen oder geschrieben werden soll. Die Position eines Puffers ist nie negativ und ist nie größer als seine Grenze.
</blockquote>
Für jeden nicht booleschen Grundtyp gibt es eine Unterklasse dieser Klasse.
<h2> Übertragen von Daten </h2>
Jede Unterklasse dieser Klasse definiert zwei Kategorien von Get - und Put-Vorgängen :
<Blockquote>
Relative Vorgänge lesen oder schreiben ein oder mehrere Elemente beginnend an der aktuellen Position und erhöhen dann die Position um die Anzahl der übertragenen Elemente. Wenn die angeforderte Übertragung den Grenzwert überschreitet, löst ein relativer Get-Vorgang einen BufferUnderflowException und ein relativer Put-Vorgang löst einen BufferOverflowException; in beiden Fällen werden keine Daten übertragen.
Absolute Vorgänge nehmen einen expliziten Elementindex und wirken sich nicht auf die Position aus. Absolute get and put operations throw an IndexOutOfBoundsException if the index argument exceeds the limit.
</blockquote>
Daten können natürlich auch von den E/A-Vorgängen eines geeigneten Kanals, die immer relativ zur aktuellen Position sind, in oder aus einem Puffer übertragen werden.
<h2> Markieren und Zurücksetzen </h2>
Die Markierung eines Puffers ist der Index, auf den seine Position zurückgesetzt wird, wenn die #reset reset Methode aufgerufen wird. Die Markierung ist nicht immer definiert, aber wenn sie definiert wird, ist sie nie negativ und ist nie größer als die Position. Wenn die Markierung definiert ist, wird sie verworfen, wenn die Position oder der Grenzwert an einen Wert angepasst wird, der kleiner als die Marke ist. Wenn die Markierung nicht definiert ist, wird durch Aufrufen der #reset reset Methode ein InvalidMarkException Auslösen ausgelöst.
<h2> Invariants </h2>
Die folgenden invarianten Haltebereiche für die Werte für Mark, Position, Limit und Kapazität:
<Blockquote>0<=mark<=position<=limit<=capacity</blockquote>
Ein neu erstellter Puffer hat immer eine Position von Null und eine Markierung, die nicht definiert ist. Der anfängliche Grenzwert kann null sein, oder es kann ein anderer Wert sein, der vom Typ des Puffers und der Art und Weise abhängt, in der er erstellt wird. Jedes Element eines neu zugeordneten Puffers wird auf Null initialisiert.
<h2> Zusätzliche Vorgänge </h2>
Zusätzlich zu Methoden für den Zugriff auf positions-, limit- und kapazitätswerte sowie zum Markieren und Zurücksetzen definiert diese Klasse auch die folgenden Vorgänge bei Puffern:
<Ul>
<li>
#clear macht einen Puffer für eine neue Sequenz von Kanallese- oder relativen Put-Vorgängen bereit: Er legt den Grenzwert auf die Kapazität und die Position auf Null fest.
</li>
<li>
#flip macht einen Puffer für eine neue Sequenz von Kanalschreib- oder relativen Get-Vorgängen bereit: Er legt den Grenzwert auf die aktuelle Position fest und legt dann die Position auf Null fest.
</li>
<li>
#rewind macht einen Puffer bereit, um die bereits enthaltenen Daten erneut zu lesen: Er lässt den Grenzwert unverändert und legt die Position auf Null fest.
</li>
<li>
Die #slice Methoden #slice(int,int) slice(index,length) erstellen eine Untermenge eines Puffers: Sie lassen den Grenzwert und die Position unverändert.
</li>
<li>
#duplicate erstellt eine flache Kopie eines Puffers: Er hinterlässt den Grenzwert und die Position unverändert.
</li>
</ul>
<h2> Schreibgeschützte Puffer </h2>
Jeder Puffer ist lesbar, aber nicht jeder Puffer ist schreibbar. Die Mutationsmethoden jeder Pufferklasse werden als optionale Vorgänge angegeben, die beim Aufrufen eines schreibgeschützten Puffers einen ReadOnlyBufferException Auslösen auslösen. Ein schreibgeschützter Puffer lässt nicht zu, dass der Inhalt geändert werden kann, aber seine Markierung, Position und Grenzwerte sind änderbar. Gibt an, ob ein Puffer schreibgeschützt ist, kann durch Aufrufen seiner #isReadOnly isReadOnly Methode bestimmt werden.
<h2> Threadsicherheit </h2>
Puffer sind nicht für die Verwendung durch mehrere gleichzeitige Threads sicher. Wenn ein Puffer von mehr als einem Thread verwendet werden soll, sollte der Zugriff auf den Puffer durch die entsprechende Synchronisierung gesteuert werden.
<h2> Aufrufverkettung </h2>
Methoden in dieser Klasse, die andernfalls keinen Wert zurückgeben sollen, werden angegeben, um den Puffer zurückzugeben, für den sie aufgerufen werden. Dadurch können Methodenaufrufe verkettet werden; z. B. die Abfolge von Anweisungen
<Blockquote>
b.flip();
b.position(23);
b.limit(42);
</blockquote>
kann durch die einzelne, kompaktere Anweisung ersetzt werden
<Blockquote>
b.flip().position(23).limit(42);
</blockquote>
In 1.4 hinzugefügt.
Java Dokumentation für java.nio.Buffer.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Konstruktoren
| Name | Beschreibung |
|---|---|
| Buffer(IntPtr, JniHandleOwnership) |
Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Laufzeit aufgerufen. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Class |
Gibt die Laufzeitklasse dieses Werts |
| Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
| HasArray |
Gibt "true" zurück, wenn |
| HasRemaining |
Gibt an, ob elemente zwischen der aktuellen Position und dem Grenzwert vorhanden sind. |
| IsDirect |
Gibt true zurück, wenn es sich um einen direkten Puffer handelt. |
| IsReadOnly |
Gibt an, ob dieser Puffer schreibgeschützt ist. |
| JniIdentityHashCode |
Ruft den Identitätshashcode ab, der diesem Java Peer von der Interop-Laufzeit zugewiesen ist. (Geerbt von Object) |
| JniManagedPeerState |
Ein Container für Daten eines bestimmten Grundtyps. (Geerbt von JavaObject) |
| JniPeerMembers |
Ein Container für Daten eines bestimmten Grundtyps. |
| PeerReference |
Ruft den JNI-Objektverweis für diesen Java Peer ab. (Geerbt von Object) |
| ThresholdClass |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
| ThresholdType |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
Methoden
| Name | Beschreibung |
|---|---|
| ArrayOffset() |
Gibt den Offset innerhalb des Sicherungsarrays dieses Puffers des ersten Elements des Puffers zurück (optionaler Vorgang). |
| Capacity() |
Gibt die Kapazität dieses Puffers zurück. |
| Clear() |
Löscht diesen Puffer. |
| Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Ein Container für Daten eines bestimmten Grundtyps. (Geerbt von JavaObject) |
| Dispose() |
Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden. (Geerbt von Object) |
| Dispose(Boolean) |
Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden. (Geerbt von Object) |
| DisposeUnlessReferenced() |
Ein Container für Daten eines bestimmten Grundtyps. (Geerbt von JavaObject) |
| Duplicate() |
Erstellt einen neuen Puffer, der den Inhalt dieses Puffers gemeinsam verwendet. |
| Equals(Object) |
Ein Container für Daten eines bestimmten Grundtyps. (Geerbt von JavaObject) |
| Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist. (Geerbt von Object) |
| Flip() |
Kippt diesen Puffer. |
| GetDirectBufferAddress() |
Ein Container für Daten eines bestimmten Grundtyps. |
| GetHashCode() |
Gibt einen Hashcodewert für das Objekt zurück. (Geerbt von Object) |
| JavaFinalize() |
Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind. (Geerbt von Object) |
| Limit() |
Gibt den Grenzwert dieses Puffers zurück. |
| Limit(Int32) |
Legt den Grenzwert dieses Puffers fest. |
| Mark() |
Legt die Markierung dieses Puffers an seiner Position fest. |
| Notify() |
Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet. (Geerbt von Object) |
| NotifyAll() |
Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten. (Geerbt von Object) |
| Position() |
Gibt die Position dieses Puffers zurück. |
| Position(Int32) |
Legt die Position dieses Puffers fest. |
| Remaining() |
Gibt die Anzahl der Elemente zwischen der aktuellen Position und dem Grenzwert zurück. |
| Reset() |
Setzt die Position dieses Puffers auf die zuvor markierte Position zurück. |
| Rewind() |
Dieser Puffer wird zurückspulen. |
| SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Ein Container für Daten eines bestimmten Grundtyps. (Geerbt von JavaObject) |
| Slice() |
Erstellt einen neuen Puffer, dessen Inhalt eine freigegebene Untermenge des Inhalts dieses Puffers ist. |
| Slice(Int32, Int32) |
Erstellt einen neuen Puffer, dessen Inhalt eine freigegebene Untermenge des Inhalts dieses Puffers ist. |
| ToArray<T>() |
Erstellt ein verwaltetes Array aus diesem Java Arraywrapper. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
| UnregisterFromRuntime() |
Hebt die Registrierung dieses Java Peers aus der Interop-Laufzeit auf. (Geerbt von Object) |
| Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><> (Geerbt von Object) |
| Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
| Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IJavaPeerable.Disposed() |
Ein Container für Daten eines bestimmten Grundtyps. (Geerbt von JavaObject) |
| IJavaPeerable.Finalized() |
Ein Container für Daten eines bestimmten Grundtyps. (Geerbt von JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Ein Container für Daten eines bestimmten Grundtyps. (Geerbt von JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Ein Container für Daten eines bestimmten Grundtyps. (Geerbt von JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Ein Container für Daten eines bestimmten Grundtyps. (Geerbt von JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Ein Container für Daten eines bestimmten Grundtyps. (Geerbt von JavaObject) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ruft den JNI-Namen des Typs der Instanz |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
| JavaCast<TResult>(IJavaObject) |
Ein Container für Daten eines bestimmten Grundtyps. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |