模块  jdk.dynalink
软件包  jdk.dynalink.linker

Class GuardedInvocation


  • public class GuardedInvocation
    extends Object
    表示条件有效的方法句柄。 通常产生的返回值为GuardingDynamicLinker.getGuardedInvocation(LinkRequest, LinkerServices)GuardingTypeConverterFactory.convertToType(Class, Class, Supplier) 它是一个调用方法句柄的不可变元组,一个定义调用句柄适用性的保护方法句柄,可用于调用句柄外部失效的零个或多个开关点,以及一个在调用期间抛出的异常类型调用方法句柄也会使其失效。 如果保护句柄为其参数返回true,并且只要任何切换点未被无效,并且只要它不引发指定类型的异常,则调用句柄适用于调用。 保护,切换点和异常类型都是可选的(受保护的调用,其中没有一个是无条件有效的)。
    • 构造方法详细信息

      • GuardedInvocation

        public GuardedInvocation​(MethodHandle invocation)
        创建一个新的无条件保护调用。 它是无条件的,因为它没有失效。
        参数
        invocation - 表示调用的方法句柄。 不能为空。
        异常
        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 - 新类型的调用。
        结果
        应用了新类型的受保护调用。
      • asType

        public GuardedInvocation asType​(CallSiteDescriptor desc)
        更改调用的类型,就好像MethodHandle.asType(MethodType)应用于其调用及其保护,如果它有一个(返回类型更改为boolean for guard)。 如果调用已经是必需类型,则返回此对象。
        参数
        desc - 调整其方法类型的调用描述符。
        结果
        应用了新类型的受保护调用。
      • 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 - 异常处理程序触发时的回退方法。
        结果
        复合方法句柄。