クラスCompositeTypeBasedGuardingDynamicLinker
java.lang.Object
jdk.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker
- すべての実装されたインタフェース:
GuardingDynamicLinker,TypeBasedGuardingDynamicLinker
public class CompositeTypeBasedGuardingDynamicLinker extends Object implements TypeBasedGuardingDynamicLinker
コンポジット型ベースの保護動的リンカー。 まだ表示されていないクラスのレシーバが検出されると、すべてのリンカーが
TypeBasedGuardingDynamicLinker.canLinkType(Class)メソッドで順番に問い合せられます。 trueを返すリンカーはクラスにバインドされ、次に同じタイプのレシーバが検出されると、そのリンカーにのみリンクが委任され、ディスパッチが高速化されます。 - 導入されたバージョン:
- 9
-
コンストラクタのサマリー
コンストラクタコンストラクタ説明CompositeTypeBasedGuardingDynamicLinker(Iterable<? extends TypeBasedGuardingDynamicLinker> linkers) 新しい複合型ベースのリンカーを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明booleancanLinkType(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の場合。
-