語言

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 回傳型別

傳回

所需方法的 handle

屬性

備註

產生一個方法句柄,使用指定型別的建構子建立物件並初始化該物件。 方法手柄的參數類型為建構子的,而回傳型態則是對建構子類別的參考。 建構子及其所有參數類型必須對查詢物件可存取。

請求的型別必須有 的回傳型別為 void。 (這與 JVM 對建構子類型描述符的處理方式一致。)

回傳的方法代柄將具有 MethodHandle#asVarargsCollector 變數元數,當且僅當建構子的變元數修飾位元(0x0080)被設定為 MethodHandle#asVarargsCollector。

如果呼叫回傳的方法句柄,建構子的類別會被初始化(如果尚未初始化的話)。

<b>範例:</b><引用>

{@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());
            }

</區塊引用>

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

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

適用於