モジュール jdk.dynalink

クラスCompositeTypeBasedGuardingDynamicLinker

java.lang.Object
jdk.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker
すべての実装されたインタフェース:
GuardingDynamicLinker, TypeBasedGuardingDynamicLinker

public class CompositeTypeBasedGuardingDynamicLinker extends Object implements TypeBasedGuardingDynamicLinker
コンポジット型ベースの保護動的リンカー。 まだ表示されていないクラスのレシーバが検出されると、すべてのリンカーがTypeBasedGuardingDynamicLinker.canLinkType(Class)メソッドで順番に問い合せられます。 trueを返すリンカーはクラスにバインドされ、次に同じタイプのレシーバが検出されると、そのリンカーにのみリンクが委任され、ディスパッチが高速化されます。
  • コンストラクタの詳細

    • CompositeTypeBasedGuardingDynamicLinker

      public CompositeTypeBasedGuardingDynamicLinker(Iterable<? extends TypeBasedGuardingDynamicLinker> linkers)
      新しい複合型ベースのリンカーを作成します。
      パラメータ:
      linkers - コンポーネント・リンカー
      例外:
      NullPointerException - linkersまたはその要素のいずれかがnullの場合。
  • メソッドの詳細

    • canLinkType

      public boolean canLinkType(Class<?> type)
      コンポジット・リンカーのうち少なくとも1つが、その型のTypeBasedGuardingDynamicLinker.canLinkType(Class)からtrueを返した場合、trueを返します。
      定義:
      インタフェースTypeBasedGuardingDynamicLinker内のcanLinkType
      パラメータ:
      type - リンクする型
      戻り値:
      コンポジット・リンカーのうち少なくとも1つがTypeBasedGuardingDynamicLinker.canLinkType(Class)からtrueを返す場合はtrue、それ以外の場合はfalse。
    • getGuardedInvocation

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

      public static List<GuardingDynamicLinker> optimize(Iterable<? extends GuardingDynamicLinker> linkers)
      タイプ・ベースのリンカーのリストを最適化します。 リスト内の隣接するリンカーのグループがすべてTypeBasedGuardingDynamicLinkerを実装している場合は、それらを含むCompositeTypeBasedGuardingDynamicLinkerの単一インスタンスに置き換えられます。
      パラメータ:
      linkers - 最適化するリンカーのリスト
      戻り値:
      最適化リスト
      例外:
      NullPointerException - linkersまたはその要素のいずれかがnullの場合。