MethodType 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。
[Android.Runtime.Register("java/lang/invoke/MethodType", ApiSince=26, DoNotGenerateAcw=true)]
public sealed class MethodType : Java.Lang.Object, IDisposable, Java.IO.ISerializable, Java.Lang.Invoke.ITypeDescriptor.IOfMethod
[<Android.Runtime.Register("java/lang/invoke/MethodType", ApiSince=26, DoNotGenerateAcw=true)>]
type MethodType = class
inherit Object
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ITypeDescriptor.IOfMethod
interface ITypeDescriptor
- 繼承
- 屬性
- 實作
備註
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 方法型別必須在方法句柄與所有呼叫者之間正確匹配,JVM 的操作會在 強制匹配,特別是在呼叫 MethodHandle#invokeExact MethodHandle.invokeExact 和 MethodHandle#invoke MethodHandle.invoke時,以及執行 invokedynamic 指令時。
此結構是一種回傳型別,並伴隨任意數量的參數型別。 類型(primitive、 void、 和 reference)由物件表示 Class 。 (為了方便說明,我們 void 將其視為一種類型。事實上,它表示沒有回傳型。)
所有的 MethodType 實例都是不變的。 如果兩個例子相等,則完全可以互換。 等號依賴於返回與參數類型的成對對應,其他皆不依賴。
此類型只能透過工廠方法建立。 所有工廠方法都可以快取值,但快取功能並非保證。 有些工廠方法是靜態的,而另一些則是虛擬方法,透過修改前置方法類型,例如透過改變所選參數。
操作參數型態群組的工廠方法系統性地呈現兩個版本,使得 Java 陣列與 Java 清單都能用於參數型別群組。 查詢方法 parameterArray 也 parameterList 提供陣列與清單的選擇。
MethodType 物件有時會從位元碼指令(如 invokedynamic,特別是從類別檔案常數池中與指令相關的描述符字串)衍生而來。
像類別和字串一樣,方法類型也可以直接以常數形式表示在類別檔案的常數池中。 方法類型可由 ldc 指向適當 CONSTANT_MethodType 常數池條目的指令載入。 該條目指 CONSTANT_Utf8 的是描述詞串的拼寫。 (關於方法型態常數的完整細節,請參閱 Java 虛擬機器規範的第 4.4.8 與 5.4.3.5 節。)
當 JVM 從描述符字串實現 a MethodType 時,描述符中所有命名的類別必須是可存取的,並且會被載入。 (但類別不必像 a CONSTANT_Class那樣初始化。)此載荷可在物件首次導出之前的任何時間 MethodType 發生。
Java 文件 java.lang.invoke.MethodType。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| HasPrimitives |
若此類型包含原始參數或回傳值,會報告。 |
| HasWrappers |
報告此類型是否包含包裝函式參數或回傳值。 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 (繼承來源 JavaObject) |
| JniPeerMembers |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
方法
| 名稱 | Description |
|---|---|
| AppendParameterTypes(Class[]) |
尋找或建立一個帶有額外參數型的方法型別。 |
| AppendParameterTypes(IList<Class>) |
尋找或建立一個帶有額外參數型的方法型別。 |
| ChangeParameterType(Int32, Class) |
尋找或建立一個具有單一不同參數型的方法型別。 |
| ChangeReturnType(Class) |
尋找或建立一個具有不同回傳類型的方法型別。 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 (繼承來源 JavaObject) |
| DescriptorString() |
回傳此方法類型的描述符字串。 |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 (繼承來源 JavaObject) |
| DropParameterTypes(Int32, Int32) |
尋找或建立一個方法型別,但省略部分參數型別。 |
| Equals(Object) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 (繼承來源 JavaObject) |
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| Erase() |
刪除 所有 的 |
| FromMethodDescriptorString(String, ClassLoader) |
尋找或建立某個方法型別的實例,根據其位元組碼描述符的拼寫。 |
| Generic() |
將所有類型(包括參考型與原始型) |
| GenericMethodType(Int32, Boolean) |
尋找或建立一個方法型別,其組件包含 |
| GenericMethodType(Int32) |
尋找或建立一個所有元件皆為 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| InsertParameterTypes(Int32, Class[]) |
尋找或建立一個帶有額外參數型的方法型別。 |
| InsertParameterTypes(Int32, IList<Class>) |
尋找或建立一個帶有額外參數型的方法型別。 |
| InvokeMethodType(Class, Class, Class[]) |
用給定元件尋找或建立一種方法型別。 |
| InvokeMethodType(Class, Class) |
用給定元件尋找或建立一種方法型別。 |
| InvokeMethodType(Class, Class[]) |
尋找或建立給定方法類型的實例。 |
| InvokeMethodType(Class, IList<Class>) |
用給定元件尋找或建立一種方法型別。 |
| InvokeMethodType(Class, MethodType) |
用給定元件尋找或建立一種方法型別。 |
| InvokeMethodType(Class) |
用給定元件尋找或建立一種方法型別。 |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| LastParameterType() |
回傳此方法類型最後一個參數型別。 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| ParameterArray() |
以陣列形式呈現參數型別(一種便利方法)。 |
| ParameterCount() |
回傳此方法類型中的參數類型數量。 |
| ParameterList() |
以列表形式呈現參數類型(一種方便方法)。 |
| ParameterType(Int32) |
在此方法類型內,回傳指定索引的參數型別。 |
| ReturnType() |
回傳此方法類型的回傳類型。 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 (繼承來源 JavaObject) |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToMethodDescriptorString() |
產生方法類型的位元組碼描述符表示。 |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Unwrap() |
將所有包裝型態轉換為對應的原始型別。 |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wrap() |
將所有原始型態轉換為對應的包裝型別。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 (繼承來源 JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 |
| ITypeDescriptor+IOfMethod.ChangeParameterType(Int32, Object) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 |
| ITypeDescriptor+IOfMethod.ChangeReturnType(Object) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 |
| ITypeDescriptor+IOfMethod.DropParameterTypes(Int32, Int32) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 |
| ITypeDescriptor+IOfMethod.InsertParameterTypes(Int32, Object[]) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 |
| ITypeDescriptor+IOfMethod.ParameterArray() |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 |
| ITypeDescriptor+IOfMethod.ParameterList() |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 |
| ITypeDescriptor+IOfMethod.ParameterType(Int32) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 |
| ITypeDescriptor+IOfMethod.ReturnType() |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
方法型別代表方法句柄接受並回傳的參數與回傳型別,或由方法代碼呼叫者傳遞並預期的參數與回傳型別。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |