モジュール jdk.dynalink
パッケージ jdk.dynalink.linker

クラスGuardedInvocation


  • public class GuardedInvocation
    extends Object
    条件付きで有効なメソッド・ハンドルを表します。 通常、GuardingDynamicLinker.getGuardedInvocation(LinkRequest, LinkerServices)およびGuardingTypeConverterFactory.convertToType(Class, Class, Supplier)の戻り値として生成されます。 これは、呼出しメソッド・ハンドルの不変タプル、呼出しハンドルの適用性を定義するガード・メソッド・ハンドル、呼出しハンドルの外部無効化に使用できる0個以上のスイッチ・ポイント、およびメソッド・ハンドルの呼出し中にスローされた場合もそれを無効化する例外タイプです。 ガード・ハンドルがその引数に対してtrueを返す場合、およびスイッチ・ポイントが無効化されていないかぎり、および指定された型の例外がスローされないかぎり、呼出しハンドルは呼出しに適しています。 ガード、スイッチ・ポイントおよび例外タイプは、すべてオプションです(いずれもないガード付き呼出しは、無条件に有効です)。
    • コンストラクタの詳細

      • GuardedInvocation

        public GuardedInvocation​(MethodHandle invocation)
        新しい無条件ガード呼出しを作成します。 無効化がないため無条件です。
        パラメータ:
        invocation - 呼出しを表すメソッド・ハンドル。 nullは不可。
        例外:
        NullPointerException - 呼出しがnullの場合。
      • GuardedInvocation

        public GuardedInvocation​(MethodHandle invocation,
                                 MethodHandle guard)
        ガード・メソッド・ハンドルを使用して、新しいガード付き呼出しを作成します。
        パラメータ:
        invocation - 呼出しを表すメソッド・ハンドル。 nullは不可。
        guard - ガードを表すメソッド・ハンドル。 MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)に従って、invocationハンドルと互換性がある必要があります。 役に立つ監視員については、Guardsクラスを確認してください。 無条件の呼出しを表すにはnullにできます。
        例外:
        NullPointerException - 呼出しがnullの場合。
      • GuardedInvocation

        public GuardedInvocation​(MethodHandle invocation,
                                 SwitchPoint switchPoint)
        スイッチ・ポイントによって無効化できる新しいガード付き呼出しを作成します。
        パラメータ:
        invocation - 呼出しを表すメソッド・ハンドル。 nullは不可。
        switchPoint - このリンクを無効にするために使用できるオプションのスイッチ・ポイント。 nullの可能性があります。 nullの場合、これは無条件の呼出しを表します。
        例外:
        NullPointerException - 呼出しがnullの場合。
      • GuardedInvocation

        public GuardedInvocation​(MethodHandle invocation,
                                 MethodHandle guard,
                                 SwitchPoint switchPoint)
        ガード・メソッド・ハンドルとそれを無効化するために使用できるスイッチ・ポイントの両方を使用して、新しいガード付き呼出しを作成します。
        パラメータ:
        invocation - 呼出しを表すメソッド・ハンドル。 nullは不可。
        guard - ガードを表すメソッド・ハンドル。 MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)に従って、invocationハンドルと互換性がある必要があります。 役に立つ監視員については、Guardsクラスを確認してください。 nullの可能性があります。 スイッチ・ポイントとスイッチ・ポイントの両方がnullの場合、これは無条件の呼出しを表します。
        switchPoint - このリンクを無効にするために使用できるオプションのスイッチ・ポイント。
        例外:
        NullPointerException - 呼出しがnullの場合。
      • GuardedInvocation

        public GuardedInvocation​(MethodHandle invocation,
                                 MethodHandle guard,
                                 SwitchPoint switchPoint,
                                 Class<? extends Throwable> exception)
        ガード・メソッド・ハンドル、それを無効化するために使用できるスイッチ・ポイント、および起動時にスローされた場合も無効化される例外を使用して、新しいガード付き呼出しを作成します。
        パラメータ:
        invocation - 呼出しを表すメソッド・ハンドル。 nullは不可。
        guard - ガードを表すメソッド・ハンドル。 MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)に従って、invocationハンドルと互換性がある必要があります。 役に立つ監視員については、Guardsクラスを確認してください。 nullの可能性があります。 これとスイッチ・ポイントおよび例外がすべてnullの場合、これは無条件の呼出しを表します。
        switchPoint - このリンクを無効にするために使用できるオプションのスイッチ・ポイント。
        exception - 呼出しによってスローされるオプションの例外タイプも無効化します。
        例外:
        NullPointerException - 呼出しがnullの場合。
      • GuardedInvocation

        public GuardedInvocation​(MethodHandle invocation,
                                 MethodHandle guard,
                                 SwitchPoint[] switchPoints,
                                 Class<? extends Throwable> exception)
        ガード・メソッド・ハンドル、それを無効化するために使用できる任意の数のスイッチ・ポイント、および起動時にスローされた場合もそれを無効化する例外を使用して、新しいガード付き呼出しを作成します。
        パラメータ:
        invocation - 呼出しを表すメソッド・ハンドル。 nullは不可。
        guard - ガードを表すメソッド・ハンドル。 MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)に従って、invocationハンドルと互換性がある必要があります。 役に立つ監視員については、Guardsクラスを確認してください。 nullの可能性があります。 これと例外の両方がnullで、スイッチ・ポイントが指定されていない場合、これは無条件の呼出しを表します。
        switchPoints - このリンクを無効にするために使用できるオプションのスイッチ・ポイント。
        exception - 呼出しによってスローされるオプションの例外タイプも無効化します。
        例外:
        NullPointerException - 呼出しがnullの場合。
    • メソッドの詳細

      • getInvocation

        public MethodHandle getInvocation()
        呼出しメソッド・ハンドルを返します。
        戻り値:
        呼出しメソッド・ハンドル。 nullにはなりません。
      • getGuard

        public MethodHandle getGuard()
        ガード・メソッド・ハンドルを返します。
        戻り値:
        ガードメソッドハンドル。 nullも可
      • getSwitchPoints

        public SwitchPoint[] getSwitchPoints()
        この呼出しハンドルのリンクを無効にするために使用できるスイッチ・ポイントを返します。
        戻り値:
        この呼出しハンドルのリンクを無効にするために使用できるスイッチ・ポイント。 nullも可
      • getException

        public Class<? extends Throwable> getException()
        呼出しによってスローされた場合、このガード付き呼出しのリンケージを無効にする必要がある例外タイプを返します。
        戻り値:
        リンケージを無効化するためにスローされる例外タイプ。 nullも可
      • hasBeenInvalidated

        public boolean hasBeenInvalidated()
        このガード付き呼出しに少なくとも1つの無効化スイッチ・ポイントがある場合のみ、trueを返します。
        戻り値:
        このガード付き呼出しに少なくとも1つの無効化スイッチ・ポイントがある場合のみtrue。
      • replaceMethods

        public GuardedInvocation replaceMethods​(MethodHandle newInvocation,
                                                MethodHandle newGuard)
        異なるメソッドを使用して新しいガード付き呼出しを作成し、スイッチ・ポイントを保持します。
        パラメータ:
        newInvocation - 新しい呼出し
        newGuard - 新しいガード
        戻り値:
        置換されたメソッドと、この呼出しと同じスイッチ・ポイントを使用した新しいガード付き呼出し。
      • addSwitchPoint

        public GuardedInvocation addSwitchPoint​(SwitchPoint newSwitchPoint)
        スイッチ・ポイントを追加して、新しいガード付き呼出しを作成します。
        パラメータ:
        newSwitchPoint - 新しいスイッチ・ポイント。 nullにできます。この場合、このメソッドは変更なしで現行のガード付き呼出しを返します。
        戻り値:
        追加されたスイッチ・ポイントを使用したガード付き呼出し。
      • asType

        public GuardedInvocation asType​(MethodType newType)
        MethodHandle.asType(MethodType)が呼出しとそのガードに適用されたかのように、呼出しのタイプを変更します(戻り型がbooleanに変更され、パラメータ数がガードに対して切り捨てられる可能性があります)。 呼出しがすでに必要な型である場合は、このオブジェクトを返します。
        パラメータ:
        newType - 呼出しの新しい型。
        戻り値:
        新しい型が適用されたガード付き呼出し。
      • asType

        public GuardedInvocation asType​(LinkerServices linkerServices,
                                        MethodType newType)
        LinkerServices.asType(MethodHandle, MethodType)が呼出しとそのガードに適用されたかのように、呼出しのタイプを変更します(戻り型がbooleanに変更され、パラメータ数がガードに対して切り捨てられる可能性があります)。 呼出しがすでに必要な型である場合は、このオブジェクトを返します。
        パラメータ:
        linkerServices - 変換に使用するリンカー・サービス
        newType - 呼出しの新しい型。
        戻り値:
        新しい型が適用されたガード付き呼出し。
      • asTypeSafeReturn

        public GuardedInvocation asTypeSafeReturn​(LinkerServices linkerServices,
                                                  MethodType newType)
        LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType)が呼出しに適用され、LinkerServices.asType(MethodHandle, MethodType)がそのガードに適用された場合(戻り型がbooleanに変更され、パラメータ数がガードに対して切り捨てられる可能性がある場合)のように、呼出しのタイプを変更します。 呼出しで型が変更されない場合は、このオブジェクトを返します。
        パラメータ:
        linkerServices - 変換に使用するリンカー・サービス
        newType - 呼出しの新しい型。
        戻り値:
        新しい型が適用されたガード付き呼出し。
      • asType

        public GuardedInvocation asType​(CallSiteDescriptor desc)
        MethodHandle.asType(MethodType)が呼出しとそのガードに適用されたかのように、呼出しのタイプを変更します(戻り型がガードのブール型に変更された場合)。 呼出しがすでに必要な型である場合は、このオブジェクトを返します。
        パラメータ:
        desc - メソッド・タイプが適合するコール記述子。
        戻り値:
        新しい型が適用されたガード付き呼出し。
      • dropArguments

        public GuardedInvocation dropArguments​(int pos,
                                               List<Class<?>> valueTypes)
        MethodHandles.dropArguments(MethodHandle, int, List)を使用して、呼出しとガード(存在し、少なくともposパラメータがある場合)の両方で引数を削除する呼出しを行います。
        パラメータ:
        pos - 削除される最初の引数の位置
        valueTypes - 削除される値の型
        戻り値:
        引数を削除する呼出し
      • dropArguments

        public GuardedInvocation dropArguments​(int pos,
                                               Class<?>... valueTypes)
        MethodHandles.dropArguments(MethodHandle, int, Class...)を使用して、呼出しとガード(存在し、少なくともposパラメータがある場合)の両方で引数を削除する呼出しを行います。
        パラメータ:
        pos - 削除される最初の引数の位置
        valueTypes - 削除される値の型
        戻り値:
        引数を削除する呼出し
      • compose

        public MethodHandle compose​(MethodHandle fallback)
        呼出し、ガード、スイッチ・ポイントおよび例外をコンポジット・メソッド・ハンドルに組み込みます。このハンドルは、ガードが失敗した場合や呼出しが無効になった場合にフォールバックする方法を認識します。
        パラメータ:
        fallback - スイッチ・ポイントが無効化された場合、ガードがfalseを返した場合、または無効化例外がスローされた場合のフォールバック・メソッド・ハンドル。
        戻り値:
        コンポジット・メソッド・ハンドル。
      • compose

        public MethodHandle compose​(MethodHandle guardFallback,
                                    MethodHandle switchpointFallback,
                                    MethodHandle catchFallback)
        呼出し、ガード、スイッチ・ポイントおよび例外をコンポジット・メソッド・ハンドルに組み込みます。このハンドルは、ガードが失敗した場合や呼出しが無効になった場合にフォールバックする方法を認識します。
        パラメータ:
        switchpointFallback - スイッチ・ポイントが無効化されている場合のフォールバック・メソッド・ハンドル。
        guardFallback - ガードがfalseを返す場合のフォールバック・メソッド・ハンドル。
        catchFallback - 例外ハンドラがトリガーされた場合のフォールバック・メソッド。
        戻り値:
        コンポジット・メソッド・ハンドル。