モジュール jdk.dynalink

クラス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の場合。
    • メソッドの詳細

      • 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 - 何らかの理由で操作が失敗した場合