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 のコンストラクター型記述子の処理と一致します)。
コンストラクターの変数アリティ修飾子ビット (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());
}
</blockquote>
このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。