- java.lang.Object
-
- jdk.dynalink.linker.GuardedInvocation
-
public class GuardedInvocation extends Object
表示有条件的有效方法句柄。 通常产生的返回值为GuardingDynamicLinker.getGuardedInvocation(LinkRequest, LinkerServices)
和GuardingTypeConverterFactory.convertToType(Class, Class, Supplier)
。 它是一个调用方法句柄的不可变元组,一个保护方法句柄,它定义了调用句柄的适用性,可以用于调用句柄的外部无效的零个或多个切换点,以及如果在方法句柄的调用也使其无效。 如果保护句柄为其参数返回true,并且只要任何一个切换点都无效,并且只要不抛出指定类型的异常,则调用句柄适用于调用。 保护,切换点和异常类型都是可选的(无条件调用无条件有效)。
-
-
构造方法摘要
构造方法 Constructor 描述 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)
创建一个新的受保护的调用,可以由切换点无效。
-
方法摘要
-
-
-
构造方法详细信息
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation)
创建一个新的无条件守卫调用。 它是无条件的,因为它没有无效。- 参数
-
invocation
- 表示调用的方法句柄。 不能为空。 - 异常
-
NullPointerException
- 如果调用为空。
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, MethodHandle guard)
创建一个新的守卫调用,具有保护方法句柄。- 参数
-
invocation
- 表示调用的方法句柄。 不能为空。 -
guard
- 表示守卫的方法句柄。 必须与兼容invocation
把手按MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)
。 对于一些有用的守卫,请查看Guards
课程。 它可以为null表示无条件调用。 - 异常
-
NullPointerException
- 如果调用为空。
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, SwitchPoint switchPoint)
创建一个新的受保护的调用,可以由切换点无效。- 参数
-
invocation
- 表示调用的方法句柄。 不能为空。 -
switchPoint
- 可用于使此链接无效的可选切换点。 它可以为空。 如果为空,则表示无条件调用。 - 异常
-
NullPointerException
- 如果调用为空。
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint)
创建一个新的守卫调用,同时具有保护方法句柄和可用于使其无效的切换点。- 参数
-
invocation
- 表示调用的方法句柄。 不能为空。 -
guard
- 代表守卫的方法句柄。 必须与兼容invocation
把手按MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)
。 对于一些有用的守卫,请查看Guards
类。 它可以为空。 如果它和切换点都为空,则表示无条件调用。 -
switchPoint
- 可用于使此链接无效的可选开关点。 - 异常
-
NullPointerException
- 如果调用为null。
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint, Class<? extends Throwable> exception)
创建一个新的守卫调用,具有保护方法句柄,可用于使其无效的切换点,以及如果在调用时抛出也会使其失效的异常。- 参数
-
invocation
- 表示调用的方法句柄。 不能为空。 -
guard
- 表示守卫的方法句柄。 必须符合invocation
句柄, 符合MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)
。 对于一些有用的守卫,请查看Guards
课程。 它可以为空。 如果它和切换点和异常都为空,则表示无条件调用。 -
switchPoint
- 可用于使此链接无效的可选切换点。 -
exception
- 调用抛出的可选异常类型也使其无效。 - 异常
-
NullPointerException
- 如果调用为空。
-
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, MethodHandle guard, SwitchPoint[] switchPoints, Class<? extends Throwable> exception)
创建一个新的有保护的调用,具有保护方法句柄,可以使用任何数量的切换点来使其无效,以及如果在调用时抛出的异常也会使其失效。- 参数
-
invocation
- 表示调用的方法句柄。 不能为空。 -
guard
- 表示守卫的方法句柄。 必须符合invocation
手柄, 符合MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle)
。 对于一些有用的守卫,请查看Guards
课程。 它可以为空。 如果它和异常都为空,并且没有指定切换点,则表示无条件调用。 -
switchPoints
- 可用于使此链接无效的可选切换点。 -
exception
- 调用抛出的可选异常类型也使其无效。 - 异常
-
NullPointerException
- 如果调用为空。
-
-
方法详细信息
-
getInvocation
public MethodHandle getInvocation()
返回调用方法句柄。- 结果
- 调用方法句柄。 它永远不会为空。
-
getGuard
public MethodHandle getGuard()
返回保护方法句柄。- 结果
- 防护方法手柄。 可以为null。
-
getSwitchPoints
public SwitchPoint[] getSwitchPoints()
返回可用于使该调用句柄的链接无效的切换点。- 结果
- 可用于使此调用句柄的链接无效的开关点。 可以为null。
-
getException
public Class<? extends Throwable> getException()
返回异常类型,如果调用抛出应该使该被守卫的调用的链接失效。- 结果
- 应该使用抛出的异常类型来使链接失效。 可以为null。
-
hasBeenInvalidated
public boolean hasBeenInvalidated()
当且仅当该被守卫的调用至少有一个无效的切换点时才返回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)
更改调用的类型,就好像MethodHandle.asType(MethodType)
应用于其调用及其保护,如果它有一个(返回类型更改为布尔值,并且参数计数可能被截断为保护)。 如果调用已经是必需的类型,则返回此对象。- 参数
-
newType
- 新的调用类型。 - 结果
- 使用新类型的守卫调用。
-
asType
public GuardedInvocation asType(LinkerServices linkerServices, MethodType newType)
更改调用的类型,就好像LinkerServices.asType(MethodHandle, MethodType)
被应用于其调用及其保护(如果它有一个(返回类型更改为布尔值,并且参数计数可能被截断为保护))。 如果调用已经是必需的类型,则返回此对象。- 参数
-
linkerServices
- 用于转换的链接器服务 -
newType
- 新的调用类型。 - 结果
- 使用新类型的守卫调用。
-
asTypeSafeReturn
public GuardedInvocation asTypeSafeReturn(LinkerServices linkerServices, MethodType newType)
改变调用的类型,仿佛LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType)
施加到它的调用和LinkerServices.asType(MethodHandle, MethodType)
施加到其后卫,如果它有一个(与返回类型更改为布尔型,和参数计数潜在截断,挡板)。 如果调用不更改其类型,则返回此对象。- 参数
-
linkerServices
- 用于转换的链接器服务 -
newType
- 新的调用类型。 - 结果
- 使用新类型的守卫调用。
-
asType
public GuardedInvocation asType(CallSiteDescriptor desc)
更改调用的类型,就好像MethodHandle.asType(MethodType)
应用于其调用及其保护,如果它有一个(返回类型更改为布尔值守 )。 如果调用已经是必需的类型,则返回此对象。- 参数
-
desc
- 调用方法类型的调用描述符。 - 结果
- 使用新类型的守卫调用。
-
filterArguments
public GuardedInvocation filterArguments(int pos, MethodHandle... filters)
将参数过滤器应用于调用和保护(如果存在且具有至少pos + 1
参数)与MethodHandles.filterArguments(MethodHandle, int, MethodHandle...)
。- 参数
-
pos
- 第一个参数的位置被过滤 -
filters
- 参数过滤器 - 结果
- 已过滤的调用
-
dropArguments
public GuardedInvocation dropArguments(int pos, List<Class<?>> valueTypes)
- 参数
-
pos
- 第一个参数的位置被删除 -
valueTypes
- 要删除的值的类型 - 结果
- 一个删除参数的调用
-
dropArguments
public GuardedInvocation dropArguments(int pos, Class<?>... valueTypes)
- 参数
-
pos
- 第一个参数的位置被删除 -
valueTypes
- 正在删除的值的类型 - 结果
- 一个删除参数的调用
-
compose
public MethodHandle compose(MethodHandle fallback)
将调用,保护,切换点和异常组合到复合方法句柄中,该句柄知道当保护失败或调用无效时如何退回。- 参数
-
fallback
- 当切换点无效的后备方法句柄,保护返回false或抛出异常无效。 - 结果
- 一个复合方法句柄。
-
compose
public MethodHandle compose(MethodHandle guardFallback, MethodHandle switchpointFallback, MethodHandle catchFallback)
将调用,保护,切换点和异常组合到复合方法句柄中,该句柄知道当保护失败或调用无效时如何退回。- 参数
-
switchpointFallback
- 在切换点无效的情况下的回退方法句柄。 -
guardFallback
-guardFallback
方法句柄在case guard返回false。 -
catchFallback
- 异常处理程序触发时的后备方法。 - 结果
- 一个复合方法句柄。
-
-