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