Buffer 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
特定基本類型數據的容器。
[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>
此類別的每個子類別都會定義兩種 取得 和 放置 作業類別:
<blockquote>
相對 作業會讀取或寫入從目前位置開始的一或多個元素,然後依傳輸的項目數目遞增位置。 如果要求的傳輸超過限制,則相對 取得 作業會 BufferUnderflowException
擲回 ,而相對 放置 作業會 BufferOverflowException
擲回 ;在任一情況下,不會傳輸任何數據。
絕對 作業會採用明確的元素索引,且不會影響位置。 如果索引自變數超過限制,則絕對 取得 和 放置 作業會擲回 IndexOutOfBoundsException
。
</blockquote>
當然,數據也可能由適當通道的 I/O 作業傳入或移出緩衝區,而該通道一律相對於目前位置。
<h2> 標記和重設 </h2>
緩衝區的 標記 是叫用 方法時 #reset reset
會重設其位置的索引。 標記不一定定義,但在定義時,它永遠不會是負數,而且永遠不會大於位置。 如果定義標記,則當位置或限制調整為小於標記的值時,就會捨棄標記。 如果未定義標記,則叫 #reset reset
用 方法會導致 InvalidMarkException
擲回 。
<h2> Invariants </h2>
標記、位置、限制和容量值的下列不變異保留:
<blockquote><=
0
標記<=
位置<=
限制<=
容量</blockquote>
新建立的緩衝區一律具有零的位置和未定義的標記。 初始限制可能是零,或者可能是一些其他值,取決於緩衝區的類型及其建構方式。 新配置緩衝區的每個元素都會初始化為零。
<h2> 清除、翻轉和倒轉 </h2>
除了存取位置、限制和容量值的方法,以及標記和重設的方法之外,這個類別也會在緩衝區上定義下列作業:
<ul>
<li>
#clear
讓緩衝區準備好供通道讀取或相對 放置 作業的新序列使用:它會將容量的限制和位置設定為零。
</李>
<li>
#flip
讓緩衝區準備好進行通道寫入或相對 取得 作業的新序列:它會將限制設定為目前的位置,然後將位置設定為零。
</李>
<li>
#rewind
讓緩衝區準備好重新讀取它已包含的數據:它會讓限制保持不變,並將位置設定為零。
</李>
</ul>
<h2> 隻讀緩衝區 </h2>
每個緩衝區都是可讀取的,但並非所有緩衝區都是可寫入的。 每個緩衝區類別的變動方法都會指定為 選擇性作業 ,以在唯讀緩衝區上叫用 時擲 ReadOnlyBufferException
回 。 只讀緩衝區不允許變更其內容,但其標記、位置和限制值是可變動的。 緩衝區是否為唯讀,都可以藉由叫用其 #isReadOnly isReadOnly
方法來決定。
<h2> 線程安全 </h2>
多個並行線程無法使用緩衝區。 如果要讓多個線程使用緩衝區,則應該由適當的同步處理來控制緩衝區的存取權。
<h2> 叫用鏈結 </h2>
這個類別中沒有要傳回值的方法會指定為傳回叫用緩衝區。 這可讓方法叫用鏈結;例如,語句序列
<blockquote>
b.flip();
b.position(23);
b.limit(42);
</blockquote>
可以取代為單一、更精簡的語句
<blockquote>
b.flip().position(23).limit(42);
</blockquote>
已在1.4中新增。
此頁面的部分是根據 所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
建構函式
Buffer(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時所使用的建構函式;由運行時間呼叫。 |
屬性
Class |
傳回這個 |
Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
HasArray |
如果 |
HasRemaining |
指出目前位置與限制之間是否有任何元素。 |
IsDirect |
如果這是直接緩衝區,則傳回 true。 |
IsReadOnly |
指出這個緩衝區是否為唯讀。 |
JniIdentityHashCode |
特定基本類型數據的容器。 (繼承來源 Object) |
JniPeerMembers |
特定基本類型數據的容器。 |
PeerReference |
特定基本類型數據的容器。 (繼承來源 Object) |
ThresholdClass |
此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式代碼使用。 |
ThresholdType |
此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式代碼使用。 |
方法
ArrayOffset() |
傳回緩衝區第一個專案  之緩衝區備份陣列內的位移; (選擇性作業) 。 |
Capacity() |
傳回這個緩衝區的容量。 |
Clear() |
清除此緩衝區。 |
Clone() |
建立並傳回這個 對象的複本。 (繼承來源 Object) |
Dispose() |
特定基本類型數據的容器。 (繼承來源 Object) |
Dispose(Boolean) |
特定基本類型數據的容器。 (繼承來源 Object) |
Duplicate() |
建立共用此緩衝區內容的新緩衝區。 |
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) |
Slice() |
建立新的緩衝區,其內容是這個緩衝區內容的共用子序列。 |
Slice(Int32, Int32) |
建立新的緩衝區,其內容是這個緩衝區內容的共用子序列。 |
ToArray<T>() |
特定基本類型數據的容器。 (繼承來源 Object) |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
特定基本類型數據的容器。 (繼承來源 Object) |
Wait() |
讓目前的線程等到喚醒為止,通常是藉由 <em>notified</em> 或 <em>interrupted</em> 來喚醒。 (繼承來源 Object) |
Wait(Int64) |
讓目前的線程等到喚醒為止,通常是<透過em>notified</em或em>interrupted</em>>,或<直到經過一定數量的實時為止。 (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是<透過em>notified</em或em>interrupted</em>>,或<直到經過一定數量的實時為止。 (繼承來源 Object) |
明確介面實作
IJavaPeerable.Disposed() |
特定基本類型數據的容器。 (繼承來源 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
特定基本類型數據的容器。 (繼承來源 Object) |
IJavaPeerable.Finalized() |
特定基本類型數據的容器。 (繼承來源 Object) |
IJavaPeerable.JniManagedPeerState |
特定基本類型數據的容器。 (繼承來源 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
特定基本類型數據的容器。 (繼承來源 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
特定基本類型數據的容器。 (繼承來源 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
特定基本類型數據的容器。 (繼承來源 Object) |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
特定基本類型數據的容器。 |
GetJniTypeName(IJavaPeerable) |
特定基本類型數據的容器。 |