MethodHandles.Lookup.FindConstructor(Class, MethodType) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
生成一个方法句柄,该方法使用指定类型的构造函数创建对象并初始化它。
[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>
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。