クラスjava.lang.invoke.MethodHandle
の使用
-
MethodHandleを使用するパッケージ パッケージ 説明 java.lang.invoke java.lang.invoke
パッケージは、Java Virtual Machineとやりとりするための低レベルのプリミティブを提供します。jdk.dynalink invokedynamic
コール・サイトをリンクするためのインタフェースとクラスが含まれています。jdk.dynalink.beans 通常のJavaオブジェクト用のリンカーを含みます。jdk.dynalink.linker 独自の言語固有のオブジェクト・モデルと型変換を実装するために、言語ランタイムに必要なインタフェースとクラスが含まれています。jdk.dynalink.linker.support 言語ランタイムが、言語固有のオブジェクト・モデルを実装し、いくつかのクラスの基本的な実装とさまざまなユーティリティを提供することによってコンバージョンをより便利にするクラスが含まれています。 -
-
java.lang.invokeでのMethodHandleの使用
MethodHandleを返すjava.lang.invokeのメソッド 修飾子と型 メソッド 説明 static MethodHandle
MethodHandles. arrayConstructor(Class<?> arrayClass)
anewarray
バイトコードの場合と同様に、必要な型の配列を構築するメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. arrayElementGetter(Class<?> arrayClass)
aaload
バイトコードの場合と同様に、配列の要素に対する読み取りアクセスを提供するメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. arrayElementSetter(Class<?> arrayClass)
astore
バイトコードの場合と同様に、配列の要素への書き込みアクセスを与えるメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. arrayLength(Class<?> arrayClass)
arraylength
バイトコードの場合と同様に、配列の長さを返すメソッド・ハンドルを生成します。MethodHandle
MethodHandle. asCollector(int collectArgPos, Class<?> arrayType, int arrayLength)
array-collectingメソッドのハンドルを作成します。ハンドルは、与えられた位置から開始して与えられた数の位置引数を受け取り、それらを配列引数に集めます。MethodHandle
MethodHandle. asCollector(Class<?> arrayType, int arrayLength)
末尾の指定された数の定位置引数を受け取り、それらを集めて1つの配列引数に格納するような、配列収集メソッド・ハンドルを作成します。MethodHandle
MethodHandle. asFixedArity()
固定引数カウント・メソッド・ハンドル(その他の点では現在のメソッド・ハンドルと同等のもの)を作成します。MethodHandle
MethodHandle. asSpreader(int spreadArgPos, Class<?> arrayType, int arrayLength)
array-spreadingメソッド・ハンドルを作成します。ハンドルは、指定された位置に配列引数を受け取り、配列の代わりに位置引数としてその要素を展開します。MethodHandle
MethodHandle. asSpreader(Class<?> arrayType, int arrayLength)
末尾の1つの配列引数を受け取り、その要素を複数の定位置引数に分配するような、配列分配メソッド・ハンドルを作成します。MethodHandle
MethodHandle. asType(MethodType newType)
現在のメソッド・ハンドルの型を新しい型に適応させるアダプタ・メソッド・ハンドルを生成します。MethodHandle
MethodHandle. asVarargsCollector(Class<?> arrayType)
末尾の任意の数の定位置引数を受け取り、それらを集めて1つの配列引数に格納できるような、可変引数アダプタを作成します。MethodHandle
MethodHandles.Lookup. bind(Object receiver, String name, MethodType type)
非staticメソッドの早期バインド・メソッド・ハンドルを生成します。MethodHandle
MethodHandle. bindTo(Object x)
値x
をメソッド・ハンドルの最初の引数にバインドしますが、その呼出しは行いません。static MethodHandle
MethodHandles. catchException(MethodHandle target, Class<? extends Throwable> exType, MethodHandle handler)
ターゲットのメソッド・ハンドルを例外ハンドラの内部で実行することによって、このターゲットを適応させるメソッド・ハンドルを作成します。static MethodHandle
MethodHandles. collectArguments(MethodHandle target, int pos, MethodHandle filter)
ターゲット・メソッド・ハンドルを、フィルタ(別のメソッド・ハンドル)でその引数のサブシーケンスを前処理することにより、適応させます。static MethodHandle
MethodHandles. constant(Class<?> type, Object value)
要求された戻り値の型を持ち、呼び出されるたびに指定された定数値を返すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. countedLoop(MethodHandle iterations, MethodHandle init, MethodHandle body)
指定された回数の反復を実行するループを構築します。static MethodHandle
MethodHandles. countedLoop(MethodHandle start, MethodHandle end, MethodHandle init, MethodHandle body)
一連の数値をカウントするループを構築します。static MethodHandle
MethodHandles. doWhileLoop(MethodHandle init, MethodHandle body, MethodHandle pred)
初期化子、本文、述語からdo-while
ループを構築します。static MethodHandle
MethodHandles. dropArguments(MethodHandle target, int pos, Class<?>... valueTypes)
いくつかのダミー引数を破棄してから指定された別のtargetメソッド・ハンドルを呼び出すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. dropArguments(MethodHandle target, int pos, List<Class<?>> valueTypes)
いくつかのダミー引数を破棄してから指定された別のtargetメソッド・ハンドルを呼び出すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. dropArgumentsToMatch(MethodHandle target, int skip, List<Class<?>> newTypes, int pos)
指定されたパラメータ型に一致するように、ターゲット・メソッド・ハンドルを適合させます。abstract MethodHandle
CallSite. dynamicInvoker()
このコール・サイトにリンクされているinvokedynamic命令と同等のメソッド・ハンドルを生成します。MethodHandle
ConstantCallSite. dynamicInvoker()
このコール・サイトの永続的なターゲットを返します。static MethodHandle
MethodHandles. empty(MethodType type)
任意の引数を無視し、何もせず、戻り値の型に応じて適切な既定値を返す、リクエストされた型のメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. exactInvoker(MethodType type)
特殊なインボーカ・メソッド・ハンドルを生成します(これを使用すれば、指定された型の任意のメソッド・ハンドルを、invokeExact
を使用する場合と同様に呼び出すことができる)。static MethodHandle
MethodHandles. explicitCastArguments(MethodHandle target, MethodType newType)
指定されたメソッド・ハンドルの型を新しい型に適応させるために、引数と戻り値の型の変換をペア単位で行うメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. filterArguments(MethodHandle target, int pos, MethodHandle... filters)
ターゲット・メソッド・ハンドルを適応させるため、その1つ以上の引数をそれぞれ固有の単項フィルタ関数を使って前処理したあと、前処理を行った各引数を対応するフィルタ関数の結果で置き換えてターゲットを呼び出します。static MethodHandle
MethodHandles. filterReturnValue(MethodHandle target, MethodHandle filter)
ターゲット・メソッド・ハンドルを適応させるため、その戻り値(存在する場合)をフィルタ(別のメソッド・ハンドル)で後処理します。MethodHandle
MethodHandles.Lookup. findConstructor(Class<?> refc, MethodType type)
指定された型のコンストラクタを使ってオブジェクトの作成と初期化を行うメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. findGetter(Class<?> refc, String name, Class<?> type)
非staticフィールドに対する読取りアクセスを提供するメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. findSetter(Class<?> refc, String name, Class<?> type)
非staticフィールドに対する書込みアクセスを提供するメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. findSpecial(Class<?> refc, String name, MethodType type, Class<?> specialCaller)
仮想メソッドの早期にバインドされるメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. findStatic(Class<?> refc, String name, MethodType type)
staticメソッドのメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. findStaticGetter(Class<?> refc, String name, Class<?> type)
staticフィールドに対する読取りアクセスを提供するメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. findStaticSetter(Class<?> refc, String name, Class<?> type)
staticフィールドに対する書込みアクセスを提供するメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. findVirtual(Class<?> refc, String name, MethodType type)
仮想メソッドのメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. foldArguments(MethodHandle target, int pos, MethodHandle combiner)
指定された位置から開始し、前処理の結果でターゲットを呼び出し、折りたたまれた引数の直前の引数の元のシーケンスに挿入して、引数の一部を前処理することによって、ターゲット・メソッド・ハンドルを修正します。static MethodHandle
MethodHandles. foldArguments(MethodHandle target, MethodHandle combiner)
ターゲット・メソッド・ハンドルを適応させるため、その引数のいくつかを前処理したあと、前処理の結果を元の一連の引数内に挿入してターゲットを呼び出します。abstract MethodHandle
CallSite. getTarget()
このコール・サイトの特定のクラスで定義された動作に従って、コール・サイトのターゲット・メソッドを返します。MethodHandle
ConstantCallSite. getTarget()
コール・サイトのターゲット・メソッドを返しますが、これは、ConstantCallSite
のfinal
フィールドのように振る舞います。MethodHandle
MutableCallSite. getTarget()
コール・サイトのターゲット・メソッドを返しますが、これは、MutableCallSite
の通常のフィールドのように振る舞います。MethodHandle
VolatileCallSite. getTarget()
コール・サイトのターゲット・メソッドを返しますが、これは、VolatileCallSite
のvolatile
フィールドのように振る舞います。static MethodHandle
MethodHandles. guardWithTest(MethodHandle test, MethodHandle target, MethodHandle fallback)
テスト(boolean値のメソッド・ハンドル)で保護することでターゲット・メソッド・ハンドルを適応させるメソッド・ハンドルを作成します。MethodHandle
SwitchPoint. guardWithTest(MethodHandle target, MethodHandle fallback)
常にターゲット、フォール・バックのいずれかに委譲するメソッド・ハンドルを返します。static MethodHandle
MethodHandles. identity(Class<?> type)
呼出し時に唯一の引数の値を返すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. insertArguments(MethodHandle target, int pos, Object... values)
ターゲット・メソッド・ハンドルの呼出しの前に、1つ以上のバインド引数をメソッド・ハンドルに提供します。static MethodHandle
MethodHandles. invoker(MethodType type)
特殊なインボーカ・メソッド・ハンドルを生成します(これを使用すれば、指定された型と互換性のある任意のメソッド・ハンドルを、invoke
を使用する場合と同様に呼び出すことができる)。static MethodHandle
MethodHandles. iteratedLoop(MethodHandle iterator, MethodHandle init, MethodHandle body)
Iterator<T>
によって生成された値の範囲にあるループを構築します。static MethodHandle
MethodHandles. loop(MethodHandle[]... clauses)
各反復時に更新およびチェックされる複数のループ変数を持つループを表すメソッド・ハンドルを作成します。static MethodHandle
MethodHandles. permuteArguments(MethodHandle target, MethodType newType, int... reorder)
引数の順序を変更することによって、指定されたメソッド・ハンドルの呼出し順序を新しい型に適応させるメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. spreadInvoker(MethodType type, int leadingArgCount)
指定されたtype
の任意のメソッド・ハンドルを呼び出すメソッド・ハンドルを生成しますが、その際、指定された数の末尾の引数が単一の末尾のObject[]
配列で置き換えられます。static MethodHandle
MethodHandles. throwException(Class<?> returnType, Class<? extends Throwable> exType)
指定されたexType
の例外をスローするメソッド・ハンドルを生成します。MethodHandle
VarHandle. toMethodHandle(VarHandle.AccessMode accessMode)
このVarHandleおよび指定されたアクセス・モードにバインドされたメソッド・ハンドルを取得します。static MethodHandle
MethodHandles. tryFinally(MethodHandle target, MethodHandle cleanup)
target
メソッドのハンドルをtry-finally
ブロックにラップすることによって処理するメソッド・ハンドルを作成します。MethodHandle
MethodHandles.Lookup. unreflect(Method m)
ルックアップ・クラスがアクセス権を持つ場合に、mへの直接メソッド・ハンドルを作成します。MethodHandle
MethodHandles.Lookup. unreflectConstructor(Constructor<?> c)
リフレクトされたコンストラクタのメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. unreflectGetter(Field f)
リフレクトされたフィールドに対する読取りアクセス権を提供するメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. unreflectSetter(Field f)
リフレクトされたフィールドに対する書込みアクセス権を提供するメソッド・ハンドルを生成します。MethodHandle
MethodHandles.Lookup. unreflectSpecial(Method m, Class<?> specialCaller)
リフレクトされたメソッドのメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. varHandleExactInvoker(VarHandle.AccessMode accessMode, MethodType type)
関連付けられたアクセス・モードの型が指定された型と互換性のあるVarHandle上で、シグネチャ・ポリモーフィック・アクセス・モード・メソッドを呼び出すために使用できる特別な「呼び出しメソッドhandle」を生成します。static MethodHandle
MethodHandles. varHandleInvoker(VarHandle.AccessMode accessMode, MethodType type)
関連付けられたアクセス・モードの型が指定された型と互換性のあるVarHandle上で、シグネチャ・ポリモーフィック・アクセス・モード・メソッドを呼び出すために使用できる特別な「呼び出しメソッドhandle」を生成します。static MethodHandle
MethodHandles. whileLoop(MethodHandle init, MethodHandle pred, MethodHandle body)
初期化子、本文、述語からwhile
ループを構築します。MethodHandle
MethodHandle. withVarargs(boolean makeVarargs)
static MethodHandle
MethodHandleProxies. wrapperInstanceTarget(Object x)
このラッパー・インスタンスの一意のメソッドと動作が同等であるターゲット・メソッド・ハンドルを生成または回復します。static MethodHandle
MethodHandles. zero(Class<?> type)
呼び出されるたびにその型のデフォルト値を返すリクエストされた戻り値型の定数メソッド・ハンドルを生成します。MethodHandle型のパラメータを持つjava.lang.invoke のメソッド 修飾子と型 メソッド 説明 static <T> T
MethodHandleProxies. asInterfaceInstance(Class<T> intfc, MethodHandle target)
指定されたメソッド・ハンドルに呼出しをリダイレクトする、指定された単一メソッド・インタフェースのインスタンスを生成します。static MethodHandle
MethodHandles. catchException(MethodHandle target, Class<? extends Throwable> exType, MethodHandle handler)
ターゲットのメソッド・ハンドルを例外ハンドラの内部で実行することによって、このターゲットを適応させるメソッド・ハンドルを作成します。static MethodHandle
MethodHandles. collectArguments(MethodHandle target, int pos, MethodHandle filter)
ターゲット・メソッド・ハンドルを、フィルタ(別のメソッド・ハンドル)でその引数のサブシーケンスを前処理することにより、適応させます。static MethodHandle
MethodHandles. countedLoop(MethodHandle iterations, MethodHandle init, MethodHandle body)
指定された回数の反復を実行するループを構築します。static MethodHandle
MethodHandles. countedLoop(MethodHandle start, MethodHandle end, MethodHandle init, MethodHandle body)
一連の数値をカウントするループを構築します。static MethodHandle
MethodHandles. doWhileLoop(MethodHandle init, MethodHandle body, MethodHandle pred)
初期化子、本文、述語からdo-while
ループを構築します。static MethodHandle
MethodHandles. dropArguments(MethodHandle target, int pos, Class<?>... valueTypes)
いくつかのダミー引数を破棄してから指定された別のtargetメソッド・ハンドルを呼び出すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. dropArguments(MethodHandle target, int pos, List<Class<?>> valueTypes)
いくつかのダミー引数を破棄してから指定された別のtargetメソッド・ハンドルを呼び出すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. dropArgumentsToMatch(MethodHandle target, int skip, List<Class<?>> newTypes, int pos)
指定されたパラメータ型に一致するように、ターゲット・メソッド・ハンドルを適合させます。static MethodHandle
MethodHandles. explicitCastArguments(MethodHandle target, MethodType newType)
指定されたメソッド・ハンドルの型を新しい型に適応させるために、引数と戻り値の型の変換をペア単位で行うメソッド・ハンドルを生成します。static MethodHandle
MethodHandles. filterArguments(MethodHandle target, int pos, MethodHandle... filters)
ターゲット・メソッド・ハンドルを適応させるため、その1つ以上の引数をそれぞれ固有の単項フィルタ関数を使って前処理したあと、前処理を行った各引数を対応するフィルタ関数の結果で置き換えてターゲットを呼び出します。static MethodHandle
MethodHandles. filterReturnValue(MethodHandle target, MethodHandle filter)
ターゲット・メソッド・ハンドルを適応させるため、その戻り値(存在する場合)をフィルタ(別のメソッド・ハンドル)で後処理します。static MethodHandle
MethodHandles. foldArguments(MethodHandle target, int pos, MethodHandle combiner)
指定された位置から開始し、前処理の結果でターゲットを呼び出し、折りたたまれた引数の直前の引数の元のシーケンスに挿入して、引数の一部を前処理することによって、ターゲット・メソッド・ハンドルを修正します。static MethodHandle
MethodHandles. foldArguments(MethodHandle target, MethodHandle combiner)
ターゲット・メソッド・ハンドルを適応させるため、その引数のいくつかを前処理したあと、前処理の結果を元の一連の引数内に挿入してターゲットを呼び出します。static MethodHandle
MethodHandles. guardWithTest(MethodHandle test, MethodHandle target, MethodHandle fallback)
テスト(boolean値のメソッド・ハンドル)で保護することでターゲット・メソッド・ハンドルを適応させるメソッド・ハンドルを作成します。MethodHandle
SwitchPoint. guardWithTest(MethodHandle target, MethodHandle fallback)
常にターゲット、フォール・バックのいずれかに委譲するメソッド・ハンドルを返します。static MethodHandle
MethodHandles. insertArguments(MethodHandle target, int pos, Object... values)
ターゲット・メソッド・ハンドルの呼出しの前に、1つ以上のバインド引数をメソッド・ハンドルに提供します。static Object
ConstantBootstraps. invoke(MethodHandles.Lookup lookup, String name, Class<?> type, MethodHandle handle, Object... args)
指定された引数を使ってメソッド・ハンドルを呼び出した結果を返します。static MethodHandle
MethodHandles. iteratedLoop(MethodHandle iterator, MethodHandle init, MethodHandle body)
Iterator<T>
によって生成された値の範囲にあるループを構築します。static MethodHandle
MethodHandles. loop(MethodHandle[]... clauses)
各反復時に更新およびチェックされる複数のループ変数を持つループを表すメソッド・ハンドルを作成します。static CallSite
LambdaMetafactory. metafactory(MethodHandles.Lookup caller, String invokedName, MethodType invokedType, MethodType samMethodType, MethodHandle implMethod, MethodType instantiatedMethodType)
適切な型適応および引数の部分評価の後、指定されたMethodHandle
への委譲により、1つ以上のインタフェースを実装する単純な関数オブジェクトの作成を容易にします。static MethodHandle
MethodHandles. permuteArguments(MethodHandle target, MethodType newType, int... reorder)
引数の順序を変更することによって、指定されたメソッド・ハンドルの呼出し順序を新しい型に適応させるメソッド・ハンドルを生成します。static <T extends Member>
TMethodHandles. reflectAs(Class<T> expected, MethodHandle target)
直接メソッド・ハンドルの未チェックの解読を実行します。MethodHandleInfo
MethodHandles.Lookup. revealDirect(MethodHandle target)
この参照オブジェクトまたは類似のオブジェクトによって作成された直接メソッド・ハンドルを解読します。abstract void
CallSite. setTarget(MethodHandle newTarget)
このコール・サイトの特定のクラスで定義された動作に従って、このコール・サイトのターゲット・メソッドを更新します。void
ConstantCallSite. setTarget(MethodHandle ignore)
常にUnsupportedOperationException
をスローします。void
MutableCallSite. setTarget(MethodHandle newTarget)
このコール・サイトのターゲット・メソッドを通常の変数として更新します。void
VolatileCallSite. setTarget(MethodHandle newTarget)
このコール・サイトのターゲット・メソッドをvolatile変数として更新します。static MethodHandle
MethodHandles. tryFinally(MethodHandle target, MethodHandle cleanup)
target
メソッドのハンドルをtry-finally
ブロックにラップすることによって処理するメソッド・ハンドルを作成します。static MethodHandle
MethodHandles. whileLoop(MethodHandle init, MethodHandle pred, MethodHandle body)
初期化子、本文、述語からwhile
ループを構築します。MethodHandle型のパラメータを持つjava.lang.invokeのコンストラクタ コンストラクタ 説明 ConstantCallSite(MethodHandle target)
永続的なターゲットを持つコール・サイトを作成します。ConstantCallSite(MethodType targetType, MethodHandle createTargetHook)
永続的なターゲットを持つコール・サイトを作成します(コール・サイト自体にバインドされる場合があります)。MutableCallSite(MethodHandle target)
初期ターゲット・メソッド・ハンドルを持つコール・サイト・オブジェクトを作成します。VolatileCallSite(MethodHandle target)
ターゲットへのvolatileバインディングを持つコール・サイトを作成します。 -
jdk.dynalinkでのMethodHandleの使用
型MethodHandleのパラメータを持つjdk.dynalinkのメソッド 修飾子と型 メソッド 説明 void
RelinkableCallSite. initialize(MethodHandle relinkAndInvoke)
再リンク呼び出しメソッドのハンドルを設定して、再リンク可能な呼び出しサイトを初期化するために動的リンカーによって呼び出されます。void
RelinkableCallSite. relink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
このメソッドは、呼び出しサイトが再リンクされるたびに動的リンカーによって呼び出されます。(例外についてはRelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle)
を参照してください)。void
RelinkableCallSite. resetAndRelink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
このメソッドは、コール・サイトが再リンクされるたびにダイナミック・リンカーによって呼び出され、リンカーはコール・サイトが以前のリンケージ・ステート(それはRelinkableCallSite.relink(GuardedInvocation, MethodHandle)
とどのように違うのですか?)を破棄することを望みます。 -
jdk.dynalink.beansでのMethodHandleの使用
MethodHandleを戻すjdk.dynalink.beansのメソッド 修飾子と型 メソッド 説明 MethodHandle
MissingMemberHandlerFactory. createMissingMemberHandler(LinkRequest linkRequest, LinkerServices linkerServices)
特定のリンク・リクエストに対する不足しているメンバーの動作を実装するのに適したメソッド・ハンドルを返します。 -
jdk.dynalink.linkerでのMethodHandleの使用
MethodHandleを戻すjdk.dynalink.linkerのメソッド 修飾子と型 メソッド 説明 MethodHandle
LinkerServices. asType(MethodHandle handle, MethodType fromType)
asType(MethodType)
と同様に、使用可能なすべてのGuardingTypeConverterFactory
実装によって生成されたメソッド・ハンドルをフックし、言語固有の型のパラメータの強制変換を提供します。MethodHandle
MethodTypeConversionStrategy. asType(MethodHandle target, MethodType newType)
メソッド・ハンドルを新しい型に変換します。default MethodHandle
LinkerServices. asTypeLosslessReturn(MethodHandle handle, MethodType fromType)
LinkerServices.asType(MethodHandle, MethodType)
と似ていますが、戻り値の型変換を特別に扱います。MethodHandle
GuardedInvocation. compose(MethodHandle fallback)
ガードが失敗したときや呼び出しが無効になったときにどのようにフォールバックするかを知っているコンポジット・メソッド・ハンドルに、呼び出し、ガード、スイッチ・ポイント、および例外を組み込みます。MethodHandle
GuardedInvocation. compose(MethodHandle guardFallback, MethodHandle switchpointFallback, MethodHandle catchFallback)
ガードが失敗したときや呼び出しが無効になったときにどのようにフォールバックするかを知っているコンポジット・メソッド・ハンドルに、呼び出し、ガード、スイッチ・ポイント、および例外を組み込みます。MethodHandle
LinkerServices. filterInternalObjects(MethodHandle target)
潜在的に内部言語ランタイム・オブジェクトを受け取ることができるパラメータにフィルタを追加して、潜在的にそれらをラップすることによってエスケープしないように、メソッド・ハンドルを変更します。MethodHandle
GuardedInvocation. getGuard()
ガード・メソッド・ハンドルを返します。MethodHandle
GuardedInvocation. getInvocation()
呼び出しメソッド・ハンドルを返します。MethodHandle
LinkerServices. getTypeConverter(Class<?> sourceType, Class<?> targetType)
ソースとターゲットの型を指定すると、それらの間で変換を行うメソッド・ハンドルが返されます。MethodHandle
MethodHandleTransformer. transform(MethodHandle target)
メソッド・ハンドルを変換します。型MethodHandleのパラメータを持つjdk.dynalink.linkerのメソッド 修飾子と型 メソッド 説明 MethodHandle
LinkerServices. asType(MethodHandle handle, MethodType fromType)
asType(MethodType)
と同様に、使用可能なすべてのGuardingTypeConverterFactory
実装によって生成されたメソッド・ハンドルをフックし、言語固有の型のパラメータの強制変換を提供します。MethodHandle
MethodTypeConversionStrategy. asType(MethodHandle target, MethodType newType)
メソッド・ハンドルを新しい型に変換します。default MethodHandle
LinkerServices. asTypeLosslessReturn(MethodHandle handle, MethodType fromType)
LinkerServices.asType(MethodHandle, MethodType)
と似ていますが、戻り値の型変換を特別に扱います。MethodHandle
GuardedInvocation. compose(MethodHandle fallback)
ガードが失敗したときや呼び出しが無効になったときにどのようにフォールバックするかを知っているコンポジット・メソッド・ハンドルに、呼び出し、ガード、スイッチ・ポイント、および例外を組み込みます。MethodHandle
GuardedInvocation. compose(MethodHandle guardFallback, MethodHandle switchpointFallback, MethodHandle catchFallback)
ガードが失敗したときや呼び出しが無効になったときにどのようにフォールバックするかを知っているコンポジット・メソッド・ハンドルに、呼び出し、ガード、スイッチ・ポイント、および例外を組み込みます。GuardedInvocation
GuardedInvocation. filterArguments(int pos, MethodHandle... filters)
呼び出しと(それが存在し、少なくともpos + 1
パラメータ)をMethodHandles.filterArguments(MethodHandle, int, MethodHandle...)
で保護する両方に引数フィルタを適用します。MethodHandle
LinkerServices. filterInternalObjects(MethodHandle target)
潜在的に内部言語ランタイム・オブジェクトを受け取ることができるパラメータにフィルタを追加して、潜在的にそれらをラップすることによってエスケープしないように、メソッド・ハンドルを変更します。GuardedInvocation
GuardedInvocation. replaceMethods(MethodHandle newInvocation, MethodHandle newGuard)
スイッチ・ポイントを保持して、異なるメソッドで新しいガードされた呼び出しを作成します。MethodHandle
MethodHandleTransformer. transform(MethodHandle target)
メソッド・ハンドルを変換します。型MethodHandleのパラメータを持つjdk.dynalink.linkerのコンストラクタ コンストラクタ 説明 GuardedInvocation(MethodHandle invocation)
無条件のガード付き呼び出しを新しく作成します。GuardedInvocation(MethodHandle invocation, MethodHandle guard)
ガード・メソッド・ハンドルを使用して、新しいガードされた呼び出しを作成します。GuardedInvocation(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint)
ガード・メソッド・ハンドルと、それを無効化するために使用できるスイッチ・ポイントの両方を使用して、新しいガードされた呼び出しを作成します。GuardedInvocation(MethodHandle invocation, MethodHandle guard, SwitchPoint[] switchPoints, Class<? extends Throwable> exception)
ガード・メソッド・ハンドル、無効化するために使用できるスイッチ・ポイントの数、呼び出し時にスローされた場合に無効にする例外など、新しいガード付き呼び出しを作成します。GuardedInvocation(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint, Class<? extends Throwable> exception)
ガード・メソッド・ハンドル、無効にするために使用できるスイッチ・ポイント、および起動時にスローされると無効にする例外を持つ、新しいガードされた呼び出しを作成します。GuardedInvocation(MethodHandle invocation, SwitchPoint switchPoint)
スイッチ・ポイントによって無効にできる新しい保護された呼び出しを作成します。 -
jdk.dynalink.linker.supportでのMethodHandleの使用
MethodHandleを戻すjdk.dynalink.linker.supportのメソッド 修飾子と型 メソッド 説明 static MethodHandle
Guards. asType(MethodHandle test, MethodType type)
ガードとして使用するためのメソッド・ハンドルを取得し、リクエストされた型に適合させますが、ブール値を返します。static MethodHandle
Guards. asType(LinkerServices linkerServices, MethodHandle test, MethodType type)
ガードとして使用するためのメソッド・ハンドルを取得し、リクエストされた型に適合させますが、ブール値を返します。MethodHandle
Lookup. findGetter(Class<?> refc, String name, Class<?> type)
static MethodHandle
Lookup. findOwnSpecial(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes)
ルックアップがあれば、そのルックアップ・クラスのメソッドをLookup.findSpecial(Class, String, MethodType)
で見つけます。MethodHandle
Lookup. findOwnSpecial(String name, Class<?> rtype, Class<?>... ptypes)
Lookup.findSpecial(Class, String, MethodType)
を使ってそのルックアップ・クラスのメソッドを検索します。static MethodHandle
Lookup. findOwnStatic(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes)
ルックアップがあれば、そのルックアップ・クラスのメソッドをLookup.findStatic(Class, String, MethodType)
で見つけます。MethodHandle
Lookup. findOwnStatic(String name, Class<?> rtype, Class<?>... ptypes)
Lookup.findStatic(Class, String, MethodType)
を使ってそのルックアップ・クラスのメソッドを検索します。MethodHandle
Lookup. findSpecial(Class<?> declaringClass, String name, MethodType type)
基になるルックアップに対してMethodHandles.Lookup.findSpecial(Class, String, MethodType, Class)
を実行します。MethodHandle
Lookup. findStatic(Class<?> declaringClass, String name, MethodType type)
基になるルックアップに対してMethodHandles.Lookup.findStatic(Class, String, MethodType)
を実行します。MethodHandle
Lookup. findVirtual(Class<?> declaringClass, String name, MethodType type)
基になるルックアップに対してMethodHandles.Lookup.findVirtual(Class, String, MethodType)
を実行します。static MethodHandle
Guards. getClassGuard(Class<?> clazz)
正確な特定のクラスであるために唯一の引数をテストするガード・メソッドを作成します。static MethodHandle
Guards. getIdentityGuard(Object obj)
他のオブジェクトと同じ参照を持つために唯一の引数をテストするガード・メソッドを作成static MethodHandle
Guards. getInstanceOfGuard(Class<?> clazz)
特定のクラスのインスタンスであるために唯一の引数をテストするガード・メソッドを作成します。static MethodHandle
Guards. isArray(int pos, MethodType type)
指定された位置の引数がJava配列の場合にtrueを返すメソッド・ハンドルを作成します。static MethodHandle
Guards. isInstance(Class<?> clazz, int pos, MethodType type)
指定された型の引数を持つメソッド・ハンドルを作成しますが、ブール型の戻り値を持ちます。static MethodHandle
Guards. isInstance(Class<?> clazz, MethodType type)
指定された型の引数を持つメソッド・ハンドルを作成しますが、ブール型の戻り値を持ちます。static MethodHandle
Guards. isNotNull()
最初の引数がnullでないかどうかを調べるガードを返します。static MethodHandle
Guards. isNull()
最初の引数がnullかどうかを調べるガードを返します。static MethodHandle
Guards. isOfClass(Class<?> clazz, MethodType type)
指定された型の引数を持つがboolean戻り値を持つガード・メソッド・ハンドルを作成します。static MethodHandle
Lookup. unreflect(MethodHandles.Lookup lookup, Method m)
MethodHandle
Lookup. unreflect(Method m)
static MethodHandle
Lookup. unreflectConstructor(MethodHandles.Lookup lookup, Constructor<?> c)
MethodHandle
Lookup. unreflectConstructor(Constructor<?> c)
MethodHandle
Lookup. unreflectGetter(Field f)
MethodHandle
Lookup. unreflectSetter(Field f)
型MethodHandleのパラメータを持つjdk.dynalink.linker.supportのメソッド 修飾子と型 メソッド 説明 static MethodHandle
Guards. asType(MethodHandle test, MethodType type)
ガードとして使用するためのメソッド・ハンドルを取得し、リクエストされた型に適合させますが、ブール値を返します。static MethodHandle
Guards. asType(LinkerServices linkerServices, MethodHandle test, MethodType type)
ガードとして使用するためのメソッド・ハンドルを取得し、リクエストされた型に適合させますが、ブール値を返します。型MethodHandleのパラメータを持つjdk.dynalink.linker.supportのコンストラクタ コンストラクタ 説明 DefaultInternalObjectFilter(MethodHandle parameterFilter, MethodHandle returnFilter)
新しいフィルタを作成します。
-