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 > 的清單 #coordinateTypes coordinate types
CT1, CT2, ..., CTn
,是 em > 座標運算式 < /em > 的類型 < ,可共同找出此 VarHandle 所參考的變數。 </ul > 變數和座標類型可以是基本類型或參考,並以 物件表示 Class
。 座標類型清單可能是空的。
產生 或 java.lang.invoke.MethodHandles.Lookup lookup
VarHandle 實例的 Factory 方法會記載支援的變數類型和座標類型清單。
每個存取模式都與一個 < em > 存取模式方法 < /em > 相關聯,這是針對存取模式命名的簽章多型方法。 在 VarHandle 實例上叫用存取模式方法時,叫用的初始引數是座標運算式,可精確指出要存取變數的物件。 叫用的尾端引數代表存取模式的重要性值。 例如,各種比較和設定或比較和交換存取模式需要變數預期值和新值的兩個尾端引數。
存取模式方法調用的 arity 和類型不會以靜態方式檢查。 相反地,每個存取模式方法都會 #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 (get
) 和寫入 set
() 存取,保證只能位不可部分完成參考和最多 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 > 不可部分完成的更新存取模式,例如,在指定的記憶體排序效果下,以不可部分完成的方式比較和設定變數的值。 屬於此群組的對應存取模式方法集合包含方法 #compareAndSet compareAndSet
、 #weakCompareAndSetPlain weakCompareAndSetPlain
、 #weakCompareAndSet weakCompareAndSet
、 #compareAndExchange compareAndExchange
#weakCompareAndSetRelease weakCompareAndSetRelease
#weakCompareAndSetAcquire weakCompareAndSetAcquire
#compareAndExchangeRelease compareAndExchangeRelease
#getAndSet getAndSet
#compareAndExchangeAcquire compareAndExchangeAcquire
#getAndSetAcquire getAndSetAcquire
、、 。 #getAndSetRelease getAndSetRelease
<li > 數值不可部分完成的更新存取模式,例如,在指定的記憶體排序效果下,以新增變數的值來取得和設定。 屬於此群組的對應存取模式方法集合是由方法 #getAndAdd getAndAdd
、、 <#getAndAddAcquire getAndAddAcquire
#getAndAddRelease getAndAddRelease
、 li > 位不可部分完成的更新存取模式所組成,例如,在指定的記憶體排序效果下,以不可部分完成的方式取得和位 OR 變數的值。 屬於此群組的對應存取模式方法集合包含方法、、、、 #getAndBitwiseXor getAndBitwiseXor
#getAndBitwiseAnd getAndBitwiseAnd
#getAndBitwiseAndAcquire getAndBitwiseAndAcquire
#getAndBitwiseAndRelease getAndBitwiseAndRelease
#getAndBitwiseXorAcquire getAndBitwiseXorAcquire
#getAndBitwiseXorRelease getAndBitwiseXorRelease
。 #getAndBitwiseOrRelease getAndBitwiseOrRelease
#getAndBitwiseOrAcquire getAndBitwiseOrAcquire
#getAndBitwiseOr getAndBitwiseOr
</ul>
產生 或 java.lang.invoke.MethodHandles.Lookup lookup
VarHandle 實例的 Factory 方法會記錄支援的存取模式集,這也可能包含根據變數類型記載限制,以及變數是否為唯讀。 如果不支援存取模式,則對應的存取模式方法會在叫用時擲回 UnsupportedOperationException
。 Factory 方法應該記載存取模式方法可能會擲回的任何其他未宣告例外狀況。 #get get
所有 VarHandle 實例都支援存取模式,而對應的方法永遠不會擲回 UnsupportedOperationException
。 如果 VarHandle 參考唯讀變數 (例如 final
欄位) ,則不支援寫入不可部分完成的更新、數值不可部分完成更新和位不可部分完成的更新存取模式,而且對應的方法會擲回 UnsupportedOperationException
。 如果支援) ,則讀取/寫入存取模式 (,除了 get
和 set
之外,還提供參考類型和所有基本類型的不可部分完成存取。 除非在 Factory 方法的檔中另有說明,否則如果支援存取模式 get
和 () 提供參考型別和所有基本類型不可部分完成的存取權,但 32 位平臺上除外 long
double
。 set
存取模式會覆寫變數宣告網站中指定的任何記憶體排序效果。 例如,使用存取模式存取欄位的 get
VarHandle 會存取其存取模式 < /em > 所指定的 <> 欄位,即使該欄位已宣告也一 volatile
樣。 當執行混合存取時,應該特別小心,因為 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」 > Executeing invocation of access mode methods < /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 或擴展基本值,就如同 (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 存取模式方法呼叫是型別安全,因為呼叫端的符號類型描述元,如 L1
中所 L2
解析,會與原始被呼叫端方法的符號類型描述元進行比對。 建立 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 與核心反映 API < /h1 > 在 API 中使用處理站方法 java.lang.invoke.MethodHandles.Lookup Lookup
,核心反映 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 檔。
此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據中所述的詞彙使用。
建構函式
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) |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <> (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的執行緒等到喚醒為止,通常是 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 是變數的動態強型別參考,或參數定義的變數系列,包括靜態欄位、非靜態欄位、陣列元素或離堆積資料結構的元件。 |