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。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 属性许可证中所述的术语使用。

适用于