言語

MethodHandles.GuardWithTest(MethodHandle, MethodHandle, MethodHandle) メソッド

定義

ブール値のメソッド ハンドルであるテストで保護することで、ターゲット メソッド ハンドルを調整するメソッド ハンドルを作成します。

[Android.Runtime.Register("guardWithTest", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public static Java.Lang.Invoke.MethodHandle? GuardWithTest(Java.Lang.Invoke.MethodHandle? test, Java.Lang.Invoke.MethodHandle? target, Java.Lang.Invoke.MethodHandle? fallback);
[<Android.Runtime.Register("guardWithTest", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
static member GuardWithTest : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle -> Java.Lang.Invoke.MethodHandle

パラメーター

test
MethodHandle

テストに使用されるメソッド ハンドルはブール値を返す必要があります

target
MethodHandle

テストに合格した場合に呼び出すメソッド ハンドル

fallback
MethodHandle

テストが失敗した場合に呼び出すメソッド ハンドル

返品

指定された if/then/else ロジックを組み込むメソッド ハンドル

属性

注釈

ブール値のメソッド ハンドルであるテストで保護することで、ターゲット メソッド ハンドルを調整するメソッド ハンドルを作成します。 ガードが失敗した場合は、代わりにフォールバック ハンドルが呼び出されます。 3 つのメソッド ハンドルはすべて、対応する引数と戻り値の型が同じである必要があります。ただし、テストの戻り値の型はブール値である必要があり、テストは他の 2 つのメソッド ハンドルよりも少ない引数を持つことができます。

結果のアダプターの擬似コードを次に示します。 <blockquote>

{@code
            boolean test(A...);
            T target(A...,B...);
            T fallback(A...,B...);
            T adapter(A... a,B... b) {
              if (test(a...))
                return target(a..., b...);
              else
                return fallback(a..., b...);
            }
            }

</blockquote> テスト引数 (擬似コード内のa... ) はテストの実行によって変更できないため、呼び出し元からターゲットまたはフォールバックに変更されずに渡されることに注意してください。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象