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

インタフェースGuardingDynamicLinker

既知のすべてのサブインタフェース:
TypeBasedGuardingDynamicLinker
既知のすべての実装クラス:
BeansLinker, CompositeGuardingDynamicLinker, CompositeTypeBasedGuardingDynamicLinker

public interface GuardingDynamicLinker
言語固有の動的リンカーのベース・インタフェース。 このようなリンカーは、必ずガード付きでメソッド・ハンドルを生成する必要があります。これは、コール・サイトでのコールに対するメソッド・ハンドルの妥当性は、なんらかの条件(少なくとも、リンカーの言語実行時に属するレシーバに依存)に依存するためです。 言語ランタイム実装者は通常、1つ以上のGuardingDynamicLinkerクラスとして独自の言語のリンク・ロジックを実装します。 これらは通常、構成するDynamicLinkerFactoryprioritized linkersとして設定され、言語固有の"プロパティが見つかりません"などの条件を処理するためにfallback linkersとして設定することもできます。

オブジェクトのJavaクラスに基づくリンカーには、このインタフェースではなくTypeBasedGuardingDynamicLinkerインタフェースを実装することを検討してください。 言語固有の型変換を実装する必要がある場合は、GuardingDynamicLinkerGuardingTypeConverterFactoryインタフェースも実装するようにしてください。

言語は、GuardingDynamicLinkerExporterを使用して、リンカーをautomatic discoveryの他の言語ランタイムにエクスポートできます。

  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices)
    コール・サイトで指定した引数を使用して、特定の呼出しに適したガード付き呼出しを作成します。
  • メソッドの詳細

    • getGuardedInvocation

      コール・サイトで指定した引数を使用して、特定の呼出しに適したガード付き呼出しを作成します。
      パラメータ:
      linkRequest - 特定の呼び出しをリンクするリクエストを記述するオブジェクト
      linkerServices - リンカー・サービス
      戻り値:
      引数に適したメソッド・ハンドルを持つガード付き呼出しと、失敗した場合に再リンクをトリガーするガード条件。 呼出しを解決できない場合はnullを返す必要があります。 戻される呼出しが無条件の(実際にはまれです)の場合、戻り値のガードはnullにできます。 呼出しには、リンケージの非同期無効化のための任意の数のスイッチ・ポイントと、(常に評価されるinstanceofガードよりもまれであるが期待されるClassCastExceptionに依存する方が速いことがよくあります)の再リンクをトリガーする予期される例外条件を記述するThrowableサブクラスを含めることもできます。 リンカーは、リンク・リクエストのコール・サイト記述子内のパラメータ・タイプと一致する呼出しを生成する必要がありますが、精度も大きさも失わない変換のみで実行できる場合を除き、コール・サイトで期待される戻り型を照合しないでください。詳細は、LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType)を参照してください。
      例外:
      Exception - 何らかの理由で操作が失敗した場合