モジュール 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)の戻り値として生成されます。 これは、呼出しメソッド・ハンドルの不変タプル、呼出しハンドルの適用性を定義するガード・メソッド・ハンドル、呼出しハンドルの外部無効化に使用できる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)
      (戻り型がブール型に変更され、パラメータ数がガード用に切り捨てられる可能性があります)が1つある場合、呼出しとそのガードにMethodHandle.asType(MethodType)が適用されたかのように、呼出しのタイプを変更します。 呼出しがすでに必要な型である場合は、このオブジェクトを返します。
      パラメータ:
      newType - 呼び出しの新しいタイプ。
      戻り値:
      新しい型が適用されたガード付き呼出し。
    • asType

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

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

      public GuardedInvocation asType(CallSiteDescriptor desc)
      (ガードの戻り値の型をブール値に変更)が1つある場合、呼出しとそのガードにMethodHandle.asType(MethodType)が適用されたかのように、呼出しのタイプを変更します。 呼出しがすでに必要な型である場合は、このオブジェクトを返します。
      パラメータ:
      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)
      呼出し、ガード、スイッチ・ポイントおよび例外をコンポジット・メソッド・ハンドルに構成します。このハンドルは、ガードが失敗した場合や呼出しが無効になった場合にフォールバックする方法を認識します。
      パラメータ:
      guardFallback - case guardのフォールバック・メソッド・ハンドルはfalseを返します。
      switchpointFallback - スイッチ・ポイントが無効になっている場合のフォールバック・メソッド・ハンドル。
      catchFallback - 例外ハンドラがトリガーされた場合のフォールバック・メソッド。
      戻り値:
      コンポジット・メソッド・ハンドル。