-
- 既知のすべてのサブインタフェース:
TypeBasedGuardingDynamicLinker
public interface GuardingDynamicLinker言語固有の動的リンカーのベースインタフェース。 このようなリンカーは、必ずガード付きのメソッドハンドルを生成する必要があります。これは、コールサイトでの呼び出しに対するメソッドハンドルの妥当性は、必然的に何らかの条件に依存するためです(少なくとも、それはリンカーの言語ランタイムに属する受信者に依存します)。 言語ランタイム・インプリメンタは、通常、独自の言語のリンク・ロジックを1つ以上のGuardingDynamicLinkerクラスとして実装します。 これらは通常、自身用に構成するDynamicLinkerFactoryでprioritized linkersとして設定し、言語固有の「見つからないプロパティ」などの条件を処理するためにfallback linkersとして設定することもできます。オブジェクトの Javaクラスに基づくリンカーに対して、このインタフェースではなく
TypeBasedGuardingDynamicLinkerインタフェースを実装することを検討してください。 言語固有の型変換を実装する必要がある場合は、GuardingDynamicLinkerにGuardingTypeConverterFactoryインタフェースも実装するようにします。言語は、
GuardingDynamicLinkerExporterを使用して、automatic discoveryの他の言語ランタイムにリンカーをエクスポートできます。
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 修飾子と型 メソッド 説明 GuardedInvocationgetGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices)コール・サイトで指定した引数を使用して、特定の呼出しに適したガード付き呼出しを作成します。
-
-
-
メソッドの詳細
-
getGuardedInvocation
GuardedInvocation getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices) throws Exception
コール・サイトで指定した引数を使用して、特定の呼出しに適したガード付き呼出しを作成します。- パラメータ:
linkRequest- 特定の呼出しをリンクするリクエストを記述するオブジェクトlinkerServices- リンカーサービス- 戻り値:
- 引数に適したメソッド・ハンドルを使用したガード付き呼出し、および失敗した場合に再リンクをトリガーするガード条件。 呼出しを解決できない場合は、nullを返す必要があります。 戻された呼出しが無条件(実際には非常にまれ)の場合、戻り値のガードはnullにできます。 呼出しには、リンケージの非同期無効化のための任意の数のスイッチ・ポイントと、再リンクをトリガーする予期される例外条件を記述する
Throwableサブクラスを含めることもできます(多くの場合、常に評価されるinstanceofガードよりも、頻度の低いが予期されるClassCastExceptionに依存する方が高速です)。 リンカーは、リンク要求のコール・サイト・ディスクリプタ内のパラメータ・タイプと一致するパラメータ・タイプの呼出しを生成する必要がありますが、精度も大きさも失われない変換のみで実行できる場合を除き、コール・サイトで予期される戻り型と一致しないようにしてください。詳細は、LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType)を参照してください。 - 例外:
Exception- 何らかの理由で操作が失敗した場合
-
-