語言

MethodHandles 類別

定義

此類別僅包含對或回傳方法句柄的靜態方法。

[Android.Runtime.Register("java/lang/invoke/MethodHandles", ApiSince=26, DoNotGenerateAcw=true)]
public class MethodHandles : Java.Lang.Object
[<Android.Runtime.Register("java/lang/invoke/MethodHandles", ApiSince=26, DoNotGenerateAcw=true)>]
type MethodHandles = class
    inherit Object
繼承
MethodHandles
屬性

備註

此類別僅包含對或回傳方法句柄的靜態方法。 它們可分為幾類: <ul><li>查找方法,幫助建立方法與欄位的方法句柄。 <li>Combinator 方法,將既有方法的 handle 組合或轉換成新的。 <li>其他工廠方法,用來建立模擬其他常見 JVM 操作或控制流程模式的方法句柄。 </ul>

在 1.7 版本中加入。

的 java.lang.invoke.MethodHandlesJava 檔。

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

建構函式

名稱 Description
MethodHandles(IntPtr, JniHandleOwnership)

此類別僅包含對或回傳方法句柄的靜態方法。

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

此類別僅包含對或回傳方法句柄的靜態方法。

(繼承來源 JavaObject)
JniPeerMembers

此類別僅包含對或回傳方法句柄的靜態方法。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
ThresholdClass

此類別僅包含對或回傳方法句柄的靜態方法。

ThresholdType

此類別僅包含對或回傳方法句柄的靜態方法。

方法

名稱 Description
ArrayConstructor(Class)

產生一個方法柄,構造所需型態的陣列,就像位元組碼一樣 anewarray 。

ArrayElementGetter(Class)

產生一個方法句柄,允許對陣列元素進行讀取存取。

ArrayElementSetter(Class)

產生一個方法句柄,允許對陣列元素進行寫入權限。

ArrayElementVarHandle(Class)

產生一個 VarHandle,允許存取型態 arrayClass為 的陣列元素。

ArrayLength(Class)

產生一個方法句柄,回傳陣列的長度,就像位元組碼一樣 arraylength 。

ByteArrayViewVarHandle(Class, ByteOrder)

產生一個 VarHandle,允許存取陣列中看似不同原始陣列類型的元素 byte[] ,例如 int[] 或 long[]。

ByteBufferViewVarHandle(Class, ByteOrder)

產生一個 VarHandle,允許存取 ByteBuffer 一個元素,視其為與 不同 byte原始元件類型的元素陣列,例如 int[]long[]或 。

CatchException(MethodHandle, Class, MethodHandle)

透過在例外處理器中執行目標方法代柄,製作一個方法代言會適配。

Clone()

建立並回傳此物件的副本。

(繼承來源 Object)
CollectArguments(MethodHandle, Int32, MethodHandle)

透過預先處理其參數子序列,並使用濾波器(另一個方法的代柄)來調整目標方法的句柄。

Constant(Class, Object)

產生一個請求回傳類型的方法代碼,每次呼叫時回傳給定的常數值。

Construct(JniObjectReference, JniObjectReferenceOptions)

此類別僅包含對或回傳方法句柄的靜態方法。

(繼承來源 JavaObject)
CountedLoop(MethodHandle, MethodHandle, MethodHandle, MethodHandle)

構建一個在數範圍內計數的迴圈。

CountedLoop(MethodHandle, MethodHandle, MethodHandle)

構建一個執行給定次數迴圈的迴圈。

Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

此類別僅包含對或回傳方法句柄的靜態方法。

(繼承來源 JavaObject)
DoWhileLoop(MethodHandle, MethodHandle, MethodHandle)

由初始化器、一個主體和謂詞構造一個 do-while 迴圈。

DropArguments(MethodHandle, Int32, Class[])

產生一個方法代言會先捨棄部分虛擬參數,然後再呼叫其他指定 目標 方法代碼。

DropArguments(MethodHandle, Int32, IList<Class>)

產生一個方法代言會捨棄部分佔位參數,然後再呼叫其他指定 目標 方法代碼。

DropArgumentsToMatch(MethodHandle, Int32, IList<Class>, Int32)

調整目標方法的句柄以匹配給定的參數類型列表。

DropReturn(MethodHandle)

刪除目標 handle 的回傳值(如果有的話)。

Empty(MethodType)

產生一個請求型別的方法代號,忽略任何參數,不做任何事,並根據回傳類型回傳合適的預設值。

Equals(Object)

此類別僅包含對或回傳方法句柄的靜態方法。

(繼承來源 JavaObject)
Equals(Object)

表示是否有其他物體「等同」於此物。

(繼承來源 Object)
ExactInvoker(MethodType)

產生一個特殊的 <em>invoker 方法 handle</em>,可用來呼叫任何特定類型的方法 handle ,就像 。MethodHandle#invokeExact invokeExact

ExplicitCastArguments(MethodHandle, MethodType)

產生一個方法代柄,透過成對參數與回傳型別轉換,將所給方法的代號型態調整為新型態。

FilterArguments(MethodHandle, Int32, MethodHandle[])

透過預先處理一個或多個參數,每個參數都有自己的一元濾波函數,然後呼叫目標,每個預處理參數都被對應的濾波函數結果取代。

FilterReturnValue(MethodHandle, MethodHandle)

透過後處理目標方法的代言人(若有回傳值),並使用過濾器(另一個方法代柄)來調整。

FoldArguments(MethodHandle, Int32, MethodHandle)

透過預處理部分參數,從指定位置開始,然後呼叫目標,將預處理結果插入原始參數序列中,位於摺疊參數之前。

FoldArguments(MethodHandle, MethodHandle)

透過預處理部分參數,然後將預處理結果插入原始參數序列中,來調整目標方法的句點。

GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
GuardWithTest(MethodHandle, MethodHandle, MethodHandle)

製作一個方法句柄,透過以測試保護目標方法柄,作為布林值的方法柄。

Identity(Class)

產生一個方法句柄,當被呼叫時回傳唯一的參數。

InsertArguments(MethodHandle, Int32, Object[])

在方法句柄被呼叫之前,提供一個或多個 <em>綁定<參數/em> 的目標方法句柄。

InvokeLookup()

回傳 Lookup lookup object 具備完整功能以模擬呼叫者所有支援的位元組碼行為。

Invoker(MethodType)

產生一種特殊的 <em invoker 方法 handle>/em<,可用於呼叫與該類型相容的任何方法代碼,就像 由 >MethodHandle#invoke invoke。

IteratedLoop(MethodHandle, MethodHandle, MethodHandle)

構造一個迴圈,範圍涵蓋由 Iterator<T>所產生的值。

JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
Loop(MethodHandle[][])

構造一個方法柄,代表一個包含多個迴圈變數的方法柄,每次迭代都會更新並檢查這些變數。

Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
PermuteArguments(MethodHandle, MethodType, Int32[])

產生一個方法代柄,透過重新排序參數,將所給方法代言的呼叫序列調整為新型態。

PrivateLookupIn(Class, MethodHandles+Lookup)

回傳一個具備完整功能以模擬所有支援的位元碼行為(包括私有存取)的查找物件,適用於目標類別。

PublicLookup()

回傳 Lookup lookup object 一個最小可信的 a。

ReflectAs(Class, MethodHandle)

對直接方法柄進行未受檢的「裂解」。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

此類別僅包含對或回傳方法句柄的靜態方法。

(繼承來源 JavaObject)
SpreadInvoker(MethodType, Int32)

產生一個方法代柄,能呼叫給定 type方法的任一方法代言會,並以單一尾 Object[] 隨陣列取代指定數量的尾隨參數。

TableSwitch(MethodHandle, MethodHandle[])

建立一個表格切換方法的代言人,可用於根據給定的目標索引(稱為選擇器)切換一組目標方法代言人。

ThrowException(Class, Class)

產生一個方法句柄,會拋出給定 exType的例外。

ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

回傳物件的字串表示。

(繼承來源 Object)
TryFinally(MethodHandle, MethodHandle)

製作一個方法代柄,透過將某個方法代柄包裹在target區塊中來適配。try-finally

UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
VarHandleExactInvoker(VarHandle+AccessMode, MethodType)

產生一個特殊的調用器方法句柄,可用於在任何與該存取模式類型相容的變體處理器上呼叫簽章多態存取模式方法。

VarHandleInvoker(VarHandle+AccessMode, MethodType)

產生一個特殊的調用器方法句柄,可用於在任何與該存取模式類型相容的變體處理器上呼叫簽章多態存取模式方法。

Wait()

導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。

(繼承來源 Object)
Wait(Int64, Int32)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
WhileLoop(MethodHandle, MethodHandle, MethodHandle)

由初始化器、一個主體和謂詞構造一個 while 迴圈。

Zero(Class)

產生一個常數方法的 handle ,該 handle 是請求的回傳型別,每次呼叫時都會回傳該型別的預設值。

明確介面實作

名稱 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 端是否有效。

適用於