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
- 繼承
- 衍生
- 屬性
備註
一個儲存特定原始類型資料的容器。
緩衝區是特定原始類型的線性有限元素序列。 除了內容外,緩衝區的基本特性還包括其容量、極限與位置:
<引用>
緩衝 區的容量 是它所包含的元素數量。 緩衝區的容量從不為負,也不會改變。
緩衝區的 極限 是第一個不應該讀寫的元素的索引。 緩衝區的極限從不為負,且永遠不會超過其容量。
緩衝區 的位置 是下一個要讀寫元素的索引。 緩衝區的位置從不為負,也不會大於其極限。
</區塊引用>
每個非布林原始型態都有一個此類子類。
<h2> 傳輸資料 </h2>
此類別的每個子類別定義了 兩個類別的取得 與 輸入 操作:
<引用>
相對運算從 當前位置讀取或寫入一個或多個元素,然後依傳輸的元素數量遞增該位置。 若請求的傳輸超過限制,則相對 取得 操作拋出 a BufferUnderflowException ,相對 輸入 操作拋出 a BufferOverflowException;無論哪種情況,皆未傳輸資料。
絕對 運算會採用明確的元素索引,且不影響位置。 絕對的取得與放置操作如果索引參數超過限制,就會拋出 。IndexOutOfBoundsException
</區塊引用>
當然,資料也可能透過適當通道的 I/O 操作,進出緩衝區,這些操作始終相對於當前位置。
<h2> 標記與重置 </h2>
緩衝區的 標記 是當 #reset reset 方法被呼叫時,其位置會被重置的索引。 標記不一定有明確定義,但一旦定義,它從不負向,也不會高於該位置。 若標記已定義,則當位置或限額調整至小於標記值時,標記即被捨棄。 若標記未定義,則 #reset reset 呼叫該方法會產生 InvalidMarkException 擲出。
<h2> 不變量 </h2>
以下不變量對標記、位置、極限及容量值成立:
<區塊引號>0<=標記<=位置<=上限<=容量</區塊引號>
新建立的緩衝區位置總是為零,標記為未定義。 初始限制可能是零,或是依緩衝區類型及其構造方式而定的其他值。 新分配的緩衝區的每個元素都會被初始化為零。
<h2> 額外運算 </h2>
除了存取位置、極限和容量值以及標記與重置的方法外,此類別還定義了對緩衝區的以下操作:
<UL>
<李>
#clear 使緩衝區準備好進行新的通道讀取或 相對 put 操作序列:它將容量限制與位置設為零。
</李>
<李>
#flip 讓緩衝區準備好進行新的通道寫入或 相對取得 操作序列:它將極限設為當前位置,然後將位置設為零。
</李>
<李>
#rewind 讓緩衝區準備好重新讀取已包含的資料:保持限制不變,並將位置設為零。
</李>
<李>
#slice和 #slice(int,int) slice(index,length) 方法會建立緩衝區的子序列:它們保持限制和位置不變。
</李>
<李>
#duplicate 會產生一個淺層緩衝區的複製品:它保持限制和位置不變。
</李>
</ul>
<h2> 唯讀緩衝區 </h2>
每個緩衝區都是可讀取的,但並非每個緩衝區都是可寫的。 每個緩衝區類別的變異方法被指定為 可選操作 ,當呼叫到唯讀緩衝區時會拋出 a ReadOnlyBufferException 。 唯讀緩衝區不允許更改其內容,但其標記、位置和限制值是可變的。 緩衝區是否為唯讀可透過呼叫其 #isReadOnly isReadOnly 方法來判斷。
<h2> 執行緒安全 </h2>
緩衝區不適合多個並行執行緒使用。 若緩衝區需由多個執行緒使用,則應透過適當的同步控制對緩衝區的存取。
<h2> 召喚鏈 </h2>
此類別中沒有其他可回傳值的方法,會指定回傳呼叫時的緩衝區。 這使得方法調用可以串接;例如,陳述序列
<引用>
b.flip();
b.position(23);
b.limit(42);
</區塊引用>
可以被更簡潔的單一陳述取代
<引用>
b.flip().position(23).limit(42);
</區塊引用>
在 1.4 版本加入。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| Buffer(IntPtr, JniHandleOwnership) |
用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| HasArray |
如果且 |
| HasRemaining |
表示目前位置與極限之間是否存在任何元素。 |
| IsDirect |
如果這是直接緩衝區,則會回傳真值。 |
| IsReadOnly |
顯示此緩衝區是否為唯讀。 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
一個儲存特定原始類型資料的容器。 (繼承來源 JavaObject) |
| JniPeerMembers |
一個儲存特定原始類型資料的容器。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
方法
| 名稱 | Description |
|---|---|
| ArrayOffset() |
回傳該緩衝區後方陣列中緩衝區第一個元素的偏移量 (可選操作)。 |
| Capacity() |
回傳這個緩衝區的容量。 |
| Clear() |
清除這個緩衝區。 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
一個儲存特定原始類型資料的容器。 (繼承來源 JavaObject) |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
一個儲存特定原始類型資料的容器。 (繼承來源 JavaObject) |
| Duplicate() |
建立一個新的緩衝區,共享該緩衝區的內容。 |
| Equals(Object) |
一個儲存特定原始類型資料的容器。 (繼承來源 JavaObject) |
| 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) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
一個儲存特定原始類型資料的容器。 (繼承來源 JavaObject) |
| Slice() |
建立一個新緩衝區,其內容是該緩衝區內容的共享子序列。 |
| Slice(Int32, Int32) |
建立一個新緩衝區,其內容是該緩衝區內容的共享子序列。 |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
一個儲存特定原始類型資料的容器。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
一個儲存特定原始類型資料的容器。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
一個儲存特定原始類型資料的容器。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
一個儲存特定原始類型資料的容器。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
一個儲存特定原始類型資料的容器。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
一個儲存特定原始類型資料的容器。 (繼承來源 JavaObject) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
一個儲存特定原始類型資料的容器。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |