モジュール 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 - リンクする型
      戻り値:
      TypeBasedGuardingDynamicLinker.canLinkType(Class)から少なくとも1つのコンポジット・リンカーが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の場合。