語言

Buffer 類別

定義

一個儲存特定原始類型資料的容器。

[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 版本加入。

Java 文件 java.nio.Buffer

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

建構函式

名稱 Description
Buffer(IntPtr, JniHandleOwnership)

用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
HasArray

如果且arrayarrayOffset不會丟棄,則回傳為真。

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)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

一個儲存特定原始類型資料的容器。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於