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,且只有在建構函式的變數 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 屬性授權中所述的詞彙使用。