java.lang.Object
jdk.dynalink.linker.GuardedInvocation
public class GuardedInvocation extends Object
条件付きで有効なメソッド・ハンドルを表します。 通常、
GuardingDynamicLinker.getGuardedInvocation(LinkRequest, LinkerServices)
とGuardingTypeConverterFactory.convertToType(Class, Class, Supplier)
の戻り値として生成されます。 これは、呼出しメソッド・ハンドルの不変タプル、呼出しハンドルの適用性を定義するガード・メソッド・ハンドル、呼出しハンドルの外部無効化に使用できる0個以上のスイッチ・ポイント、およびメソッド・ハンドルの呼出し中にスローされた場合もそれを無効化する例外タイプです。 呼出しハンドルは、ガード・ハンドルがその引数に対してtrueを返す場合、およびスイッチ・ポイントのいずれかが無効化されていないかぎり、および指定された型の例外をスローしないかぎり、呼出しに適しています。 ガード、スイッチ・ポイントおよび例外タイプは、すべてオプションの(それらのどれも持たない保護された呼び出しは無条件に有効です)です。 - 導入されたバージョン:
- 9
-
コンストラクタのサマリー
コンストラクタコンストラクタ説明GuardedInvocation
(MethodHandle invocation) 無条件でガードされた新しい呼出しを作成します。GuardedInvocation
(MethodHandle invocation, MethodHandle guard) ガード・メソッド・ハンドルを使用して、新しいガード付き呼出しを作成します。GuardedInvocation
(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint) ガード・メソッド・ハンドルとスイッチ・ポイントの両方を使用して、ガード付きの新しい呼出しを作成します。GuardedInvocation
(MethodHandle invocation, MethodHandle guard, SwitchPoint[] switchPoints, Class<? extends Throwable> exception) ガード・メソッド・ハンドル、無効化に使用できる任意の数のスイッチ・ポイント、および起動時にスローされた場合も無効化される例外を使用して、新しいガード付き呼出しを作成します。GuardedInvocation
(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint, Class<? extends Throwable> exception) ガード・メソッド・ハンドル、スイッチ・ポイントを使用して無効化できるスイッチ・ポイント、および起動時にスローされた場合も無効化される例外を使用して、新しいガード付き呼出しを作成します。GuardedInvocation
(MethodHandle invocation, SwitchPoint switchPoint) スイッチ・ポイントによって無効化できる新しいガード付き呼出しを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明addSwitchPoint
(SwitchPoint newSwitchPoint) スイッチ・ポイントを追加して、新しいガード付き呼出しを作成します。asType
(MethodType newType) (戻り型がブール型に変更され、パラメータ数がガード用に切り捨てられる可能性があります)が1つある場合、呼出しとそのガードにMethodHandle.asType(MethodType)
が適用されたかのように、呼出しのタイプを変更します。asType
(CallSiteDescriptor desc) (ガードの戻り値の型をブール値に変更)が1つある場合、呼出しとそのガードにMethodHandle.asType(MethodType)
が適用されたかのように、呼出しのタイプを変更します。asType
(LinkerServices linkerServices, MethodType newType) (戻り型がブール型に変更され、パラメータ数がガード用に切り捨てられる可能性があります)が1つある場合、呼出しとそのガードにLinkerServices.asType(MethodHandle, MethodType)
が適用されたかのように、呼出しのタイプを変更します。asTypeSafeReturn
(LinkerServices linkerServices, MethodType newType) 呼出しのタイプを変更します。LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType)
が呼出しに適用され、LinkerServices.asType(MethodHandle, MethodType)
がガードに適用される((戻り型がブール型に変更され、パラメータ数がガード用に切り捨てられる可能性があります)が1つある場合)。compose
(MethodHandle fallback) 呼出し、ガード、スイッチ・ポイントおよび例外をコンポジット・メソッド・ハンドルに構成します。このハンドルは、ガードが失敗した場合や呼出しが無効になった場合にフォールバックする方法を認識します。compose
(MethodHandle guardFallback, MethodHandle switchpointFallback, MethodHandle catchFallback) 呼出し、ガード、スイッチ・ポイントおよび例外をコンポジット・メソッド・ハンドルに構成します。このハンドルは、ガードが失敗した場合や呼出しが無効になった場合にフォールバックする方法を認識します。dropArguments
(int pos, Class<?>... valueTypes) 呼び出しと(それが存在し、少なくともpos
パラメータ)の両方の引数をMethodHandles.dropArguments(MethodHandle, int, Class...)
でドロップする呼び出しを行います。dropArguments
(int pos, List<Class<?>> valueTypes) 呼び出しと(それが存在し、少なくともpos
パラメータ)の両方の引数をMethodHandles.dropArguments(MethodHandle, int, List)
でドロップする呼び出しを行います。filterArguments
(int pos, MethodHandle... filters) 呼び出しと(それが存在し、少なくともpos + 1
パラメータ)をMethodHandles.filterArguments(MethodHandle, int, MethodHandle...)
で保護する両方に引数フィルタを適用します。呼出しによってスローされた場合、このガード付き呼出しのリンケージが無効になる例外タイプを返します。getGuard()
ガード・メソッド・ハンドルを返します。起動メソッド・ハンドルを返します。この呼出しハンドルのリンクを無効にするために使用できるスイッチ・ポイントを返します。boolean
このガード付き呼出しに少なくとも1つの無効化されたスイッチ・ポイントがある場合のみ、trueを返します。replaceMethods
(MethodHandle newInvocation, MethodHandle newGuard) 異なるメソッドを使用して新しいガード付き呼出しを作成し、スイッチ・ポイントを保持します。
-
コンストラクタの詳細
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation) 無条件でガードされた新しい呼出しを作成します。 無効化がないため、無条件です。- パラメータ:
invocation
- 呼出しを表すメソッド・ハンドル。 nullは不可。- 例外:
NullPointerException
- 呼出しがnullの場合。
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, MethodHandle guard) ガード・メソッド・ハンドルを使用して、新しいガード付き呼出しを作成します。- パラメータ:
invocation
- 呼出しを表すメソッド・ハンドル。 nullは不可。guard
- ガードを表すメソッド・ハンドル。MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)
についてinvocation
ハンドルと互換性がある必要があります。 役に立つガードについては、Guards
クラスを確認してください。 無条件の呼出しを表す場合はnullにできます。- 例外:
NullPointerException
- 呼出しがnullの場合。
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, SwitchPoint switchPoint) スイッチ・ポイントによって無効化できる新しいガード付き呼出しを作成します。- パラメータ:
invocation
- 呼出しを表すメソッド・ハンドル。 nullは不可。switchPoint
- このリンクを無効にするために使用できるオプションのスイッチ・ポイント。 nullでもかまいません。 nullの場合、これは無条件の呼出しを表します。- 例外:
NullPointerException
- 呼出しがnullの場合。
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint) ガード・メソッド・ハンドルとスイッチ・ポイントの両方を使用して、ガード付きの新しい呼出しを作成します。- パラメータ:
invocation
- 呼出しを表すメソッド・ハンドル。 nullは不可。guard
- ガードを表すメソッド・ハンドル。MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)
についてinvocation
ハンドルと互換性がある必要があります。 役に立つガードについては、Guards
クラスを確認してください。 nullでもかまいません。 スイッチ・ポイントとスイッチ・ポイントの両方がnullの場合、これは無条件起動を表します。switchPoint
- このリンクを無効にするために使用できるオプションのスイッチ・ポイント。- 例外:
NullPointerException
- 呼出しがnullの場合。
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint, Class<? extends Throwable> exception) ガード・メソッド・ハンドル、スイッチ・ポイントを使用して無効化できるスイッチ・ポイント、および起動時にスローされた場合も無効化される例外を使用して、新しいガード付き呼出しを作成します。- パラメータ:
invocation
- 呼出しを表すメソッド・ハンドル。 nullは不可。guard
- ガードを表すメソッド・ハンドル。MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)
についてinvocation
ハンドルと互換性がある必要があります。 役に立つガードについては、Guards
クラスを確認してください。 nullでもかまいません。 それとスイッチ・ポイントと例外がすべてnullの場合、これは無条件起動を表します。switchPoint
- このリンクを無効にするために使用できるオプションのスイッチ・ポイント。exception
- 呼出しによってスローされるオプションの例外タイプも無効化されます。- 例外:
NullPointerException
- 呼出しがnullの場合。
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, MethodHandle guard, SwitchPoint[] switchPoints, Class<? extends Throwable> exception) ガード・メソッド・ハンドル、無効化に使用できる任意の数のスイッチ・ポイント、および起動時にスローされた場合も無効化される例外を使用して、新しいガード付き呼出しを作成します。- パラメータ:
invocation
- 呼出しを表すメソッド・ハンドル。 nullは不可。guard
- ガードを表すメソッド・ハンドル。MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)
についてinvocation
ハンドルと互換性がある必要があります。 役に立つガードについては、Guards
クラスを確認してください。 nullでもかまいません。 これと例外の両方がnullで、スイッチ・ポイントが指定されていない場合、これは無条件の呼出しを表します。switchPoints
- このリンクを無効にするために使用できるオプションのスイッチ・ポイント。exception
- 呼出しによってスローされるオプションの例外タイプも無効化されます。- 例外:
NullPointerException
- 呼出しがnullの場合。
-
-
メソッドの詳細
-
getInvocation
-
getGuard
-
getSwitchPoints
public SwitchPoint[] getSwitchPoints()この呼出しハンドルのリンクを無効にするために使用できるスイッチ・ポイントを返します。- 戻り値:
- この呼び出しハンドルのリンクを無効にするために使用できるスイッチ・ポイント。 nullも可。
-
getException
-
hasBeenInvalidated
public boolean hasBeenInvalidated()このガード付き呼出しに少なくとも1つの無効化されたスイッチ・ポイントがある場合のみ、trueを返します。- 戻り値:
- このガード付き呼出しに少なくとも1つの無効化されたスイッチ・ポイントがある場合のみtrue。
-
replaceMethods
public GuardedInvocation replaceMethods(MethodHandle newInvocation, MethodHandle newGuard) 異なるメソッドを使用して新しいガード付き呼出しを作成し、スイッチ・ポイントを保持します。- パラメータ:
newInvocation
- 新しい呼び出しnewGuard
- 新しいガード- 戻り値:
- 置換されたメソッドと、この呼出しと同じスイッチ・ポイントを持つ新しいガード付き呼出し。
-
addSwitchPoint
public GuardedInvocation addSwitchPoint(SwitchPoint newSwitchPoint) スイッチ・ポイントを追加して、新しいガード付き呼出しを作成します。- パラメータ:
newSwitchPoint
- 新しいスイッチ・ポイント。 nullの場合、このメソッドは変更なしで現在のガード付き呼出しを返します。- 戻り値:
- 追加されたスイッチ・ポイントによるガード付き呼び出し。
-
asType
public GuardedInvocation asType(MethodType newType) (戻り型がブール型に変更され、パラメータ数がガード用に切り捨てられる可能性があります)が1つある場合、呼出しとそのガードにMethodHandle.asType(MethodType)
が適用されたかのように、呼出しのタイプを変更します。 呼出しがすでに必要な型である場合は、このオブジェクトを返します。- パラメータ:
newType
- 呼び出しの新しいタイプ。- 戻り値:
- 新しい型が適用されたガード付き呼出し。
-
asType
public GuardedInvocation asType(LinkerServices linkerServices, MethodType newType) (戻り型がブール型に変更され、パラメータ数がガード用に切り捨てられる可能性があります)が1つある場合、呼出しとそのガードにLinkerServices.asType(MethodHandle, MethodType)
が適用されたかのように、呼出しのタイプを変更します。 呼出しがすでに必要な型である場合は、このオブジェクトを返します。- パラメータ:
linkerServices
- 変換に使用するリンカー・サービスnewType
- 呼び出しの新しいタイプ。- 戻り値:
- 新しい型が適用されたガード付き呼出し。
-
asTypeSafeReturn
public GuardedInvocation asTypeSafeReturn(LinkerServices linkerServices, MethodType newType) 呼出しのタイプを変更します。LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType)
が呼出しに適用され、LinkerServices.asType(MethodHandle, MethodType)
がガードに適用される((戻り型がブール型に変更され、パラメータ数がガード用に切り捨てられる可能性があります)が1つある場合)。 呼出しでその型が変更されない場合は、このオブジェクトを返します。- パラメータ:
linkerServices
- 変換に使用するリンカー・サービスnewType
- 呼び出しの新しいタイプ。- 戻り値:
- 新しい型が適用されたガード付き呼出し。
-
asType
public GuardedInvocation asType(CallSiteDescriptor desc) (ガードの戻り値の型をブール値に変更)が1つある場合、呼出しとそのガードにMethodHandle.asType(MethodType)
が適用されたかのように、呼出しのタイプを変更します。 呼出しがすでに必要な型である場合は、このオブジェクトを返します。- パラメータ:
desc
- メソッド型が適応するコール記述子。- 戻り値:
- 新しい型が適用されたガード付き呼出し。
-
filterArguments
public GuardedInvocation filterArguments(int pos, MethodHandle... filters) 呼び出しと(それが存在し、少なくともpos + 1
パラメータ)をMethodHandles.filterArguments(MethodHandle, int, MethodHandle...)
で保護する両方に引数フィルタを適用します。- パラメータ:
pos
- 第1引数の位置がフィルタリングされるfilters
- 引数フィルタ- 戻り値:
- フィルタリングされた呼び出し
-
dropArguments
public GuardedInvocation dropArguments(int pos, List<Class<?>> valueTypes) 呼び出しと(それが存在し、少なくともpos
パラメータ)の両方の引数をMethodHandles.dropArguments(MethodHandle, int, List)
でドロップする呼び出しを行います。- パラメータ:
pos
- 最初の引数の位置が削除されるvalueTypes
- ドロップされる値の型- 戻り値:
- 引数を削除する呼び出し
-
dropArguments
public GuardedInvocation dropArguments(int pos, Class<?>... valueTypes) 呼び出しと(それが存在し、少なくともpos
パラメータ)の両方の引数をMethodHandles.dropArguments(MethodHandle, int, Class...)
でドロップする呼び出しを行います。- パラメータ:
pos
- 最初の引数の位置が削除されるvalueTypes
- ドロップされる値の型- 戻り値:
- 引数を削除する呼び出し
-
compose
public MethodHandle compose(MethodHandle fallback) 呼出し、ガード、スイッチ・ポイントおよび例外をコンポジット・メソッド・ハンドルに構成します。このハンドルは、ガードが失敗した場合や呼出しが無効になった場合にフォールバックする方法を認識します。- パラメータ:
fallback
- スイッチ・ポイントが無効になった場合のフォールバック・メソッド・ハンドル、ガードがfalseを返した場合、または無効な例外がスローされた場合のフォールバック・メソッド・ハンドル。- 戻り値:
- コンポジット・メソッド・ハンドル。
-
compose
public MethodHandle compose(MethodHandle guardFallback, MethodHandle switchpointFallback, MethodHandle catchFallback) 呼出し、ガード、スイッチ・ポイントおよび例外をコンポジット・メソッド・ハンドルに構成します。このハンドルは、ガードが失敗した場合や呼出しが無効になった場合にフォールバックする方法を認識します。- パラメータ:
guardFallback
- case guardのフォールバック・メソッド・ハンドルはfalseを返します。switchpointFallback
- スイッチ・ポイントが無効になっている場合のフォールバック・メソッド・ハンドル。catchFallback
- 例外ハンドラがトリガーされた場合のフォールバック・メソッド。- 戻り値:
- コンポジット・メソッド・ハンドル。
-