Share via


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
繼承
Buffer
衍生
屬性

備註

特定基本型別數據的容器。

緩衝區是特定基本類型的線性有限元素序列。 除了其內容之外,緩衝區的基本屬性是其容量、限制和位置:

<blockquote>

緩衝區的 容量 是它所包含的元素數目。 緩衝區的容量永遠不會是負數,而且永遠不會變更。

緩衝區 的限制 是不應該讀取或寫入之第一個專案的索引。 緩衝區的限制永遠不會是負數,而且永遠不會大於其容量。

緩衝區 的位置 是要讀取或寫入之下一個專案的索引。 緩衝區的位置永遠不會是負數,而且永遠不會大於其限制。

</blockquote>

每個非布爾基本類型都有一個這個類別的子類別。

<h2> 傳輸數據 </h2>

此類別的每個子類別都會定義兩種 取得放置 作業類別:

<blockquote>

相對 作業會讀取或寫入從目前位置開始的一或多個元素,然後依傳輸的項目數目遞增位置。 如果要求的傳輸超過限制,則相對 取得 作業會 BufferUnderflowException 擲回 ,而相對 放置 作業會 BufferOverflowException擲回 ;在任一情況下,不會傳輸任何數據。

絕對 作業會採用明確的元素索引,且不會影響位置。 如果索引自變數超過限制,則絕對 取得放置 作業會擲回 IndexOutOfBoundsException

</blockquote>

當然,數據也可能由適當通道的 I/O 作業傳入或移出緩衝區,而該通道一律相對於目前位置。

<h2> 標記和重設 </h2>

緩衝區的 標記 是叫用 方法時 #reset reset 會重設其位置的索引。 標記不一定定義,但在定義時,它永遠不會是負數,而且永遠不會大於位置。 如果定義標記,則當位置或限制調整為小於標記的值時,就會捨棄標記。 如果未定義標記,則叫 #reset reset 用 方法會導致 InvalidMarkException 擲回 。

<h2> Invariants </h2>

標記、位置、限制和容量值的下列不變異保留:

<blockquote>&lt;=0標記&lt;=位置&lt;=限制&lt;=容量</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中新增。

java.nio.BufferJava 檔。

此頁面的部分是根據 所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。

建構函式

Buffer(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時所使用的建構函式;由運行時間呼叫。

屬性

Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
Handle

基礎Android實例的句柄。

(繼承來源 Object)
HasArray

如果 array 不會擲回 ,則 arrayOffset 傳回 true。

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)

特定基本類型數據的容器。

適用於