VarHandle 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。
[Android.Runtime.Register("java/lang/invoke/VarHandle", ApiSince=33, DoNotGenerateAcw=true)]
public abstract class VarHandle : Java.Lang.Object
[<Android.Runtime.Register("java/lang/invoke/VarHandle", ApiSince=33, DoNotGenerateAcw=true)>]
type VarHandle = class
inherit Object
- 繼承
- 屬性
備註
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 在各種 <em>存取模式</em>下支援這類變數的存取,包括一般讀取/寫入存取、揮發性讀取/寫入存取,以及 compare-and-set。
VarHandles 是不可變的,而且沒有可見的狀態。 VarHandles 無法由使用者子類別化。
VarHandle 具有:<ul<>li>a #varType variable type
T、此 VarHandle 所參考之每個變數的類型;以及 <li 清單CT1, CT2, ..., CTn
#coordinateTypes coordinate types
,以及 em>> 座標運算式</em> 的類型<,可聯合找出此 VarHandle 所參考的變數。 </ul> 變數和座標類型可以是基本類型或參考,而且是由 Class
物件表示。 座標類型清單可能是空的。
產生 或 java.lang.invoke.MethodHandles.Lookup lookup
VarHandle 實例的 Factory 方法會記載支援的變數類型和座標類型清單。
每個存取模式都與一個 <em>存取模式方法</em> 相關聯,這是針對存取模式命名的簽章多型方法。 在 VarHandle 實體上叫用存取模式方法時,叫用的初始自變數是座標表示式,指出要存取變數的物件。 叫用的尾端自變數代表存取模式的重要性值。 例如,各種 compare-and-set 或 compare-and-exchange 存取模式需要變數預期值和新值的兩個尾端自變數。
存取模式方法調用的自變數和類型不會以靜態方式檢查。 相反地,每個存取模式方法都會 #accessModeType(AccessMode) access mode type
指定 ,以 實例表示 MethodType
,做為動態檢查自變數的方法簽章。 存取模式類型會根據 VarHandle 實例的座標類型,以及存取模式值的值來提供正式參數類型。 存取模式類型也會提供傳回型別,通常就 VarHandle 實例的變數類型而言。 在 VarHandle 實體上叫用存取模式方法時,呼叫月臺的符號型別描述項、叫用的自變數運行時間類型,以及傳回值的運行時間類型,必須符合存取模式類型中指定的類型。 如果比對失敗,將會擲回運行時間例外狀況。
例如,存取模式方法 #compareAndSet
會指定,如果接收者是具有座標類型和變數類型的 CT1, ..., CTn
VarHandle 實體,則其存取模式類型 T
為 (CT1 c1, ..., CTn cn, T expectedValue, T newValue)boolean
。 假設 VarHandle 實體可以存取數位元素,而且其座標類型為 String[]
int
,而其變數類型為 String
。 此 VarHandle 實體上的存取模式型態 compareAndSet
會是 (String[] c1, int c2, String expectedValue, String newValue)boolean
。 這類 VarHandle 實體可能會由 MethodHandles#arrayElementVarHandle(Class) array factory method
和存取陣列元素產生,如下所示:
{@code
String[] sa = ...
VarHandle avh = MethodHandles.arrayElementVarHandle(String[].class);
boolean r = avh.compareAndSet(sa, 10, "expected", "new");
}
存取模式可控制不可部分完成性和一致性屬性。 <em Plain</em>> read () 和 write (set
get
) 存取權保證只有參考和基本值最多 32 位不可部分完成,而且對執行線程以外的線程沒有可觀察的排序條件約束。 <em>Opaque</em> 作業是位不可部分完成的,而且在存取相同變數時會以一致的方式排序。 除了遵守不透明屬性之外,<em>Acquire</em 模式讀取及其後續存取權也會在比對 <em>Release</em>> 模式寫入和先前的存取之後排序。 除了遵守 Acquire 和 Release 屬性之外,所有 <em>Volatile</em> 作業都會彼此完全排序。
存取模式會分組為下列類別: <ul><li>讀取存取模式,以取得指定記憶體順序效果下變數的值。 屬於這個群組的對應存取模式方法集合包含方法#get get
、、#getVolatile getVolatile
、 #getAcquire getAcquire
#getOpaque getOpaque
。 <li>寫入存取模式,以在指定的記憶體排序效果下設定變數的值。 屬於這個群組的對應存取模式方法集合包含方法#set set
、、#setVolatile setVolatile
、 #setRelease setRelease
#setOpaque setOpaque
。 <li>atomic update access 模式,例如,在指定的記憶體排序效果下,以不可部分完成方式比較和設定變數的值。 屬於此群組的對應存取模式方法集合包含方法、、、、#weakCompareAndSetAcquire weakCompareAndSetAcquire
、 #getAndSetRelease getAndSetRelease
#getAndSetAcquire getAndSetAcquire
#getAndSet getAndSet
#compareAndExchangeRelease compareAndExchangeRelease
#compareAndExchange compareAndExchange
#weakCompareAndSetRelease weakCompareAndSetRelease
#compareAndExchangeAcquire compareAndExchangeAcquire
#weakCompareAndSet weakCompareAndSet
#weakCompareAndSetPlain weakCompareAndSetPlain
#compareAndSet compareAndSet
<li>numeric atomic update access 模式,例如,以不可部分完成的方式取得和設定,並在指定的記憶體排序效果下新增變數的值。 屬於這個群組的對應存取模式方法集合是由方法 #getAndAdd getAndAdd
、 #getAndAddAcquire getAndAddAcquire
、 #getAndAddRelease getAndAddRelease
、 <li>位不可部分完成的更新存取模式所組成,例如,在指定的記憶體排序效果下,以不可部分完成方式取得和位或變數的值。 屬於此群組的對應存取模式方法集合包含方法 、、、、#getAndBitwiseAndAcquire getAndBitwiseAndAcquire
、#getAndBitwiseOrAcquire getAndBitwiseOrAcquire
#getAndBitwiseOrRelease getAndBitwiseOrRelease
#getAndBitwiseXorRelease getAndBitwiseXorRelease
#getAndBitwiseXorAcquire getAndBitwiseXorAcquire
#getAndBitwiseOr getAndBitwiseOr
#getAndBitwiseXor getAndBitwiseXor
#getAndBitwiseAnd getAndBitwiseAnd
#getAndBitwiseAndRelease getAndBitwiseAndRelease
</ul>
產生 或 java.lang.invoke.MethodHandles.Lookup lookup
VarHandle 實例的 Factory 方法會記錄支援的存取模式集合,這也可能包含根據變數類型以及變數是否為唯讀的檔限制。 如果不支援存取模式,則對應的存取模式方法會在呼叫時擲回 UnsupportedOperationException
。 Factory 方法應該記錄存取模式方法可能擲回的任何其他未宣告例外狀況。 #get get
所有 VarHandle 實體都支援存取模式,而且對應的方法永遠不會擲回 UnsupportedOperationException
。 如果 VarHandle 參考唯讀變數(例如 final
欄位),則不支援寫入、不可部分完成更新、數值不可部分完成更新和位不可部分完成更新存取模式,且對應的方法會擲回 UnsupportedOperationException
。 讀取/寫入存取模式(如果支援),除了 get
和 set
之外,提供參考型別和所有基本型別的不可部分完成存取權。 除非在 Factory 方法的檔案中另有說明,否則存取模式get
和 (如果支援)會提供參考型別和所有基本類型不可部分完成的存取,但 32 位平臺上除外 double
long
set
。
存取模式會覆寫變數宣告月臺所指定的任何記憶體排序效果。 例如,使用get
存取模式存取欄位的 VarHandle,即使宣告volatile
了該欄位,也會透過其存取模式</em> 指定<>來存取字段。 當執行混合式存取時,應該非常小心,因為 Java 記憶體模型可能會允許令人驚訝的結果。
除了支持在各種存取模式下存取變數之外,還會提供一組稱為記憶體柵欄方法的靜態方法,以精細控制記憶體順序。
Java 語言規格允許其他線程觀察作業,就像是以程式原始碼中明顯不同的順序執行作業,但受限於限制式,例如,使用鎖定、 volatile
字段或 VarHandles。 靜態方法、#fullFence fullFence
、#acquireFence acquireFence
、 #loadLoadFence loadLoadFence
#releaseFence releaseFence
和 #storeStoreFence storeStoreFence
也可以用來強加條件約束。 其規格與某些存取模式的情況一樣,在缺乏「重新排列」方面是片語的--如果圍欄不存在,則可能會發生可觀察的排序效果。 更精確的存取模式方法和記憶體圍欄方法規格的片語,可能會伴隨Java語言規格的未來更新。
<h1>編譯存取模式方法<的調用/h1> Java 方法呼叫表示式,命名存取模式方法可以從 Java 原始程式碼叫用 VarHandle。 從原始程式碼的觀點來看,這些方法可以接受任何自變數及其多型結果(如果表示)可以轉換成任何傳回型別。 正式完成這項作業的方式是授與存取模式方法變數arity Object
自變數和Object
傳回型別(如果傳回型別為多型),但它們有稱為em>簽章多型</em>的額外品質<,可將這種調用自由直接連接到 JVM 執行堆疊。
與虛擬方法一樣,存取模式方法的來源層級呼叫會編譯成 invokevirtual
指令。 更不尋常的是,編譯程式必須記錄實際的自變數類型,而且可能不會在自變數上執行方法調用轉換。 相反地,它必須產生指示,根據自己的未轉換類型在堆疊上推送它們。 VarHandle 物件本身會在自變數之前推送到堆疊上。 然後,編譯程式會產生 invokevirtual
指令,以符號型別描述元叫用存取模式方法,描述自變數和傳回型別。
若要發出完整的符號類型描述元,編譯程式也必須判斷傳回類型(如果多型)。 這是根據方法調用表達式的轉換,如果有的話,或者 Object
,如果調用是表達式,則為 ,否則 void
如果叫用是語句, 則為 。 轉換可以是基本類型(但不是 void
)。
在邊角案例中,未轉換 null
的自變數會得到 的 java.lang.Void
符號型別描述元。 型別的模棱兩可 Void
是無害的,因為除了 Null 參考之外,沒有類型的 Void
參考。
<h1>“invoke”>執行存取模式方法<的調用/h1> 第一次 invokevirtual
執行指令時,會透過符號方式解析指令中的名稱,並確認方法呼叫是靜態合法的連結。 這也會保留對存取模式方法的呼叫。 在此情況下,會檢查編譯程式發出的符號類型描述元,以取得正確的語法,並解析它所包含的名稱。 因此, invokevirtual
只要符號型別描述元的格式正確且類型存在,叫用存取模式方法的指令一律會連結。
invokevirtual
在鏈接之後執行 時,JVM 會先檢查接收 VarHandle 的存取模式類型,以確保它符合符號類型描述元。 如果類型比對失敗,表示呼叫端叫用的存取模式方法不存在於所叫用的個別 VarHandle 上。
存取模式方法的調用行為就像是 的調用 MethodHandle#invoke
,其中接收方法句柄接受 VarHandle 實例做為前置自變數。 更具體來說,下列是 ,其中 {access-mode
} 會對應至存取模式方法名稱:
{@code
VarHandle vh = ..
R r = (R) vh.{access-mode}(p1, p2, ..., pN);
}
行為就像:
{@code
VarHandle vh = ..
VarHandle.AccessMode am = VarHandle.AccessMode.valueFromMethodName("{access-mode}");
MethodHandle mh = MethodHandles.varHandleExactInvoker(
am,
vh.accessModeType(am));
R r = (R) mh.invoke(vh, p1, p2, ..., pN)
}
(模數存取模式方法不會宣告擲回 Throwable
。 這相當於:
{@code
MethodHandle mh = MethodHandles.lookup().findVirtual(
VarHandle.class,
"{access-mode}",
MethodType.methodType(R, p1, p2, ..., pN));
R r = (R) mh.invokeExact(vh, p1, p2, ..., pN)
}
其中所需的方法類型是符號型別描述元,而且 MethodHandle#invokeExact
會執行 ,因為在叫用目標之前,句柄會視需要套用參考轉換,box、unbox 或擴展基本值,就像是 by MethodHandle#asType asType
(另見 MethodHandles#varHandleInvoker
)。
更簡潔地,這種行為相當於:
{@code
VarHandle vh = ..
VarHandle.AccessMode am = VarHandle.AccessMode.valueFromMethodName("{access-mode}");
MethodHandle mh = vh.toMethodHandle(am);
R r = (R) mh.invoke(p1, p2, ..., pN)
}
在此情況下,方法句柄會系結至 VarHandle 實例。
<h1>調用檢查</h1> 在一般程式中,VarHandle 存取模式類型比對通常會成功。 但是,如果比對失敗,JVM 會擲回 WrongMethodTypeException
。
因此,存取模式類型不符,在靜態型別程式中可能會顯示為連結錯誤,可能會在使用 VarHandles 的程式中顯示為動態 WrongMethodTypeException
。
由於存取模式類型包含「即時」 Class
物件,因此方法類型比對會同時考慮類型名稱和類別載入器。 因此,即使在某個類別載入器L1
中建立 VarHandle VH
並用於另一L2
個 ,VarHandle 存取模式方法呼叫是類型安全,因為呼叫端的符號類型描述元,如 中所L2
解析,會與原始被呼叫者方法的符號類型描述元進行比對,如 中所L1
解析。 中解析 L1
會在建立時 VH
發生,且其存取模式類型已指派,而中的 L2
解析會在指示連結時 invokevirtual
發生。
除了類型描述元檢查之外,VarHandles 存取變數的功能不受限制。 如果 VarHandle 是由可存取該變數的類別在非公用變數上形成,則任何接收該變數參考的呼叫端都可以在任何位置使用產生的 VarHandle。
不同於核心反映 API,每次叫用反映方法時都會檢查存取權,建立 VarHandle 時會執行 VarHandle 存取檢查。 因此,VarHandles 對非公用變數,或非公用類別中的變數,通常應該保密。 除非使用不受信任的程式代碼,否則不應將其傳遞至不受信任的程序代碼。
<h1>VarHandle 建立</h1> Java 程式代碼可以建立 VarHandle,直接存取該程式代碼可存取的任何字段。 這是透過稱為 java.lang.invoke.MethodHandles.Lookup MethodHandles.Lookup
的反射式功能型 API 來完成。 例如,可以從 取得 java.lang.invoke.MethodHandles.Lookup#findVarHandle Lookup.findVarHandle
非靜態字段的 VarHandle。 核心反映 API 物件也有轉換方法。 java.lang.invoke.MethodHandles.Lookup#unreflectVarHandle Lookup.unreflectVarHandle
受保護欄位成員的存取僅限於存取類別或其中一個子類別的接收者,而存取類別也必須是受保護成員定義類別的子類別(或封裝同層級)。 如果 VarHandle 參考目前封裝外部宣告類別的受保護非靜態欄位,接收者自變數將會縮小為存取類別的類型。
<h1>在 VarHandles 與 Core Reflection API</h1> 之間互通使用 API 中的 java.lang.invoke.MethodHandles.Lookup Lookup
Factory 方法,核心反映 API 物件所代表的任何欄位都可以轉換成行為相等的 VarHandle。 例如,反光 java.lang.reflect.Field Field
鏡可以使用 轉換成 VarHandle java.lang.invoke.MethodHandles.Lookup#unreflectVarHandle Lookup.unreflectVarHandle
。 產生的 VarHandles 通常會提供對基礎欄位的更直接且有效率的存取。
作為特殊案例,當核心反映 API 用來檢視這個類別中的簽章多型存取模式方法時,它們會顯示為一般非多型方法。 其反省外觀,如 所 java.lang.Class#getDeclaredMethod Class.getDeclaredMethod
檢視,不受其在此 API 中的特殊狀態影響。 例如, java.lang.reflect.Method#getModifiers Method.getModifiers
會報告任何類似宣告之方法所需的修飾詞位,包括此案例 native
和 varargs
位。
如同任何反映的方法,這些方法(反映時)可以直接透過 java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke
、透過 JNI 或透過間接叫 java.lang.invoke.MethodHandles.Lookup#unreflect Lookup.unreflect
用。 不過,這類反映呼叫不會產生存取模式方法調用。 如果傳遞必要的自變數(類型為單一自 Object[]
變數),則這類呼叫會忽略 自變數,並將擲回 UnsupportedOperationException
。
由於 invokevirtual
指示可以在任何符號類型描述元下原生叫用 VarHandle 存取模式方法,因此此反映檢視會透過位元組程式代碼與這些方法的一般呈現衝突。 因此,當 反省地檢視 時 Class.getDeclaredMethod
,這些原生方法只能被視為佔位符。
若要取得特定存取模式類型的叫用者方法,請使用 java.lang.invoke.MethodHandles#varHandleExactInvoker
或 java.lang.invoke.MethodHandles#varHandleInvoker
。 java.lang.invoke.MethodHandles.Lookup#findVirtual Lookup.findVirtual
API 也能夠傳回方法句柄,以針對任何指定的存取模式類型呼叫存取模式方法,而且行為java.lang.invoke.MethodHandles#varHandleInvoker
相當於 。
<h1>VarHandles 與 Java 泛型</h1> 之間的互通,可以針對變數取得 VarHandle,例如以 Java 泛型類型宣告的字段。 如同核心反映 API,VarHandle 的變數類型將會從來源層級類型的清除建構。 叫用 VarHandle 存取模式方法時,其自變數的類型或傳回值轉換類型可能是泛型類型或類型實例。 如果發生這種情況,編譯程式會在建構指令的符號類型描述元時,將其清除取代這些 invokevirtual
類型。
已在 9 中新增。
的 java.lang.invoke.VarHandle
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
建構函式
VarHandle(IntPtr, JniHandleOwnership) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
屬性
Class |
傳回這個 |
Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
JniIdentityHashCode |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
JniPeerMembers |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
PeerReference |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
ThresholdClass |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
ThresholdType |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
方法
AccessModeType(VarHandle+AccessMode) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
AcquireFence() |
確保柵欄前的負載不會重新排列柵欄之後的負載和存放區。 |
Clone() |
建立並傳回這個 對象的複本。 (繼承來源 Object) |
CompareAndExchange(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
CompareAndExchangeAcquire(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
CompareAndExchangeRelease(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
CompareAndSet(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
CoordinateTypes() |
傳回這個 VarHandle 的座標類型。 |
Dispose() |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
Dispose(Boolean) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
FullFence() |
確保柵欄前的載入和存放區不會重新排列柵欄之後的負載和存放區。 |
Get(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAcquire(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndAdd(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndAddAcquire(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndAddRelease(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndBitwiseAnd(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndBitwiseAndAcquire(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndBitwiseAndRelease(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndBitwiseOr(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndBitwiseOrAcquire(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndBitwiseOrRelease(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndBitwiseXor(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndBitwiseXorAcquire(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndBitwiseXorRelease(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndSet(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndSetAcquire(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetAndSetRelease(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
GetOpaque(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetVolatile(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
IsAccessModeSupported(VarHandle+AccessMode) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
JavaFinalize() |
當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。 (繼承來源 Object) |
LoadLoadFence() |
確保柵欄前的負載不會在柵欄之後重新排列負載。 |
Notify() |
喚醒正在等候此物件監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
ReleaseFence() |
確保柵欄前的載入和存放區不會重新排列柵欄之後的商店。 |
Set(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
SetOpaque(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
SetRelease(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
SetVolatile(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
StoreStoreFence() |
確保柵欄前的商店不會在柵欄之後使用商店重新排序。 |
ToArray<T>() |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
ToMethodHandle(VarHandle+AccessMode) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
VarType() |
傳回這個 VarHandle 所參考之變數的變數類型。 |
Wait() |
讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<> (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
Wait(Int64) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
WeakCompareAndSet(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
WeakCompareAndSetAcquire(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
WeakCompareAndSetPlain(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
WeakCompareAndSetRelease(Object[]) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
明確介面實作
IJavaPeerable.Disposed() |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
IJavaPeerable.Finalized() |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
IJavaPeerable.JniManagedPeerState |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 (繼承來源 Object) |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |
GetJniTypeName(IJavaPeerable) |
VarHandle 是動態強型別的變數參考,或參數定義的變數系列,包括靜態字段、非靜態字段、數組元素或非堆積數據結構的元件。 |