- java.lang.Object
-
- jdk.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker
-
- すべての実装されたインタフェース:
GuardingDynamicLinker
,TypeBasedGuardingDynamicLinker
public class CompositeTypeBasedGuardingDynamicLinker extends Object implements TypeBasedGuardingDynamicLinker
複合型ベース・ガーディング・ダイナミック・リンカー。 未だ見られないクラスのレシーバに遭遇すると、すべてのリンカーはTypeBasedGuardingDynamicLinker.canLinkType(Class)
メソッドで順番に問合せされます。 trueを返すリンカーはクラスにバインドされ、次に同じ型のレシーバが見つかると、そのリンカーにのみデリゲートされ、ディスパッチが高速化されます。
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 CompositeTypeBasedGuardingDynamicLinker(Iterable<? extends TypeBasedGuardingDynamicLinker> linkers)
新しい複合型ベースのリンカーを作成します。
-
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 boolean
canLinkType(Class<?> type)
複合リンカーの少なくとも1つが、型のTypeBasedGuardingDynamicLinker.canLinkType(Class)
からtrueを返す場合はtrueを返します。GuardedInvocation
getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices)
コール・サイトで、指定された引数を持つ特定の呼び出しに適切な保護された呼び出しを作成します。static List<GuardingDynamicLinker>
optimize(Iterable<? extends GuardingDynamicLinker> linkers)
型ベースのリンカーのリストを最適化します。
-
-
-
コンストラクタの詳細
-
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の場合。
-
-