- 既知のすべてのサブインタフェース:
TypeBasedGuardingDynamicLinker
public interface GuardingDynamicLinker
言語固有の動的リンカーのベース・インタフェース。 このようなリンカーは、必ずガード付きでメソッド・ハンドルを生成する必要があります。これは、コール・サイトでのコールに対するメソッド・ハンドルの妥当性は、なんらかの条件(少なくとも、リンカーの言語実行時に属するレシーバに依存)に依存するためです。 言語ランタイム実装者は通常、1つ以上の
GuardingDynamicLinker
クラスとして独自の言語のリンク・ロジックを実装します。 これらは通常、構成するDynamicLinkerFactory
でprioritized linkers
として設定され、言語固有の"プロパティが見つかりません"などの条件を処理するためにfallback linkers
として設定することもできます。
オブジェクトのJavaクラスに基づくリンカーには、このインタフェースではなくTypeBasedGuardingDynamicLinker
インタフェースを実装することを検討してください。 言語固有の型変換を実装する必要がある場合は、GuardingDynamicLinker
にGuardingTypeConverterFactory
インタフェースも実装するようにしてください。
言語は、GuardingDynamicLinkerExporter
を使用して、リンカーをautomatic discovery
の他の言語ランタイムにエクスポートできます。
- 導入されたバージョン:
- 9
-
メソッドのサマリー
修飾子と型メソッド説明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
- 何らかの理由で操作が失敗した場合
-