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

クラスGuardedInvocation

java.lang.Object
jdk.dynalink.linker.GuardedInvocation

public class GuardedInvocation
extends Object
条件付きで有効なメソッド・ハンドルを表します。 通常、GuardingDynamicLinker.getGuardedInvocation(LinkRequest, LinkerServices)GuardingTypeConverterFactory.convertToType(Class, Class, Supplier)の戻り値として生成されます。 これは、呼び出しメソッド・ハンドルの不変タプル、呼び出しハンドルの適用可能性を定義するガード・メソッド・ハンドル、呼び出しハンドルの外部無効化に使用できるゼロまたはそれ以上のスイッチ・ポイント、および例外処理の間にスローされる例外型です。メソッド・ハンドルを呼び出すと、メソッド・ハンドルも無効になります。 呼び出しハンドルは、ガード・ハンドルが引数に対して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でもかまいません。 これとスイッチ・ポイントの両方がヌルの場合、これは無条件の呼び出しを表します。
      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()
      呼び出しメソッド・ハンドルを返します。
      戻り値:
      呼び出しメソッドhandle。 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)がその呼び出しとそのガードに適用されたかのように、呼び出しのタイプを変更します((戻り値の型がブール値に変更され、ガードに対してパラメータ・カウントが切り捨てられる可能性があります)が1つの場合)。 呼び出しがすでに必要な型であれば、このオブジェクトを返します。
      パラメータ:
      newType - 呼び出しの新しい型。
      戻り値:
      それに新しい型が適用された保護された呼び出し。
    • asType

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

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

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

      public GuardedInvocation filterArguments​(int pos, MethodHandle... filters)
      呼び出しと(それが存在し、少なくともpos + 1パラメータ)をMethodHandles.filterArguments(MethodHandle, int, MethodHandle...)で保護する両方に引数フィルタを適用します。
      パラメータ:
      pos - 第1引数の位置がフィルタリングされる
      filters - 引数フィルタ
      戻り値:
      フィルタリングされた呼び出し
    • dropArguments

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

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

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

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