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 回傳型別
傳回
所需方法的 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());
}
</區塊引用>
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。