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を返します。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
- リンクする型- 戻り値:
- コンポジット・リンカーのうち少なくとも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の場合。
-