モジュール 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の他の言語ランタイムにエクスポートできます。

    • メソッドのサマリー

      修飾子と型 メソッド 説明
      GuardedInvocation getGuardedInvocation​(LinkRequest linkRequest, LinkerServices linkerServices)
      コール・サイトで、指定された引数を持つ特定の呼び出しに適切な保護された呼び出しを作成します。
    • メソッドの詳細

      • getGuardedInvocation

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