共用方式為


MethodHandles.Lookup.FindConstructor(Class, MethodType) 方法

定義

產生方法句柄,這個句柄會使用指定型別的建構函式建立物件並初始化它。

[Android.Runtime.Register("findConstructor", "(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public Java.Lang.Invoke.MethodHandle FindConstructor (Java.Lang.Class refc, Java.Lang.Invoke.MethodType type);
[<Android.Runtime.Register("findConstructor", "(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
member this.FindConstructor : Java.Lang.Class * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle

參數

refc
Class

從中存取方法的類別或介面

type
MethodType

方法的類型,並省略接收者自變數,以及 void 傳回型別

傳回

所需的方法句柄

屬性

備註

產生方法句柄,這個句柄會使用指定型別的建構函式建立物件並初始化它。 方法句柄的參數類型會是建構函式的型別,而傳回型別將是建構函式類別的參考。 查閱對象必須能夠存取建構函式及其所有自變數類型。

要求的型別必須具有的 void傳回型別。 (這與 JVM 處理建構函式類型描述項一致。

如果已設定建構函式的變數 arity,傳回的方法句柄將會有 MethodHandle#asVarargsCollector 變數 arity,且只有在建構函式的變數 arity 修飾詞位 (0x0080) 設定時。

如果叫用傳回的方法句柄,如果尚未初始化建構函式的類別,則會初始化建構函式的 類別。

<b>範例:</b><blockquote>

{@code
            import static java.lang.invoke.MethodHandles.*;
            import static java.lang.invoke.MethodType.*;
            ...
            MethodHandle MH_newArrayList = publicLookup().findConstructor(
              ArrayList.class, methodType(void.class, Collection.class));
            Collection orig = Arrays.asList("x", "y");
            Collection copy = (ArrayList) MH_newArrayList.invokeExact(orig);
            assert(orig != copy);
            assertEquals(orig, copy);
            // a variable-arity constructor:
            MethodHandle MH_newProcessBuilder = publicLookup().findConstructor(
              ProcessBuilder.class, methodType(void.class, String[].class));
            ProcessBuilder pb = (ProcessBuilder)
              MH_newProcessBuilder.invoke("x", "y", "z");
            assertEquals("[x, y, z]", pb.command().toString());
            }

</blockquote>

java.lang.invoke.MethodHandles.Lookup.findConstructor(java.lang.Class<?>, java.lang.invoke.MethodType)Java 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

適用於