Класс GuardedInvocation

public class GuardedInvocation
extends Object

Представляет условно допустимый обработчик метода. Обычно возвращается в качестве результата GuardingDynamicLinker.getGuardedInvocation(LinkRequest, LinkerServices) и GuardingTypeConverterFactory.convertToType(Class, Class, Supplier). Это неизменяемая кортеж из обработчика вызова метода, обработчика-стража, определяющего применимость обработчика вызова, нулевых или более точек переключения, которые могут использоваться для внешнего аннулирования обработчика вызова, и типа исключения, которое, если выбрасывается во время вызова обработчика метода, также аннулирует его. Обработчик вызова подходит для вызова, если обработчик-страж возвращает true для своих аргументов и пока ни одна из точек переключения не аннулирована, и пока не выбрасывается исключение указанного типа. Страж, точки переключения и тип исключения являются необязательными (защищённый вызов, у которого нет ни одного из них, безусловно, допустим).

Конструкторы

Конструктор Описание
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 addSwitchPoint​(SwitchPoint newSwitchPoint)

Создаёт новый защищённый вызов с добавленной точкой переключения.

GuardedInvocation asType​(MethodType newType)

Изменяет тип вызова, как если бы MethodHandle.asType(MethodType) был применён к его вызову и его стражу, если он есть (с типом возвращаемого значения, изменённым на boolean, и количеством параметров, потенциально укороченным для стража).

GuardedInvocation asType​(CallSiteDescriptor desc)

Изменяет тип вызова, как если бы MethodHandle.asType(MethodType) был применён к его вызову и его стражу, если он есть (с типом возвращаемого значения, изменённым на boolean для стража).

GuardedInvocation asType​(LinkerServices linkerServices, MethodType newType)

Изменяет тип вызова, как если бы LinkerServices.asType(MethodHandle, MethodType) был применён к его вызову и его стражу, если он есть (с типом возвращаемого значения, изменённым на boolean, и количеством параметров, потенциально укороченным для стража).

GuardedInvocation asTypeSafeReturn​(LinkerServices linkerServices, MethodType newType)

Изменяет тип вызова, как если бы LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType) был применён к его вызову и LinkerServices.asType(MethodHandle, MethodType) был применён к его стражу, если он есть (с типом возвращаемого значения, изменённым на boolean, и количеством параметров, потенциально укороченным для стража).

MethodHandle compose​(MethodHandle fallback)

Компонует вызов, страж, точки переключения и исключение в составной обработчик метода, который знает, как выполнить обратный вызов, когда страж терпит неудачу или вызов аннулируется.

MethodHandle compose​(MethodHandle guardFallback, MethodHandle switchpointFallback, MethodHandle catchFallback)

Компонует вызов, страж, точки переключения и исключение в составной обработчик метода, который знает, как выполнить обратный вызов, когда страж терпит неудачу или вызов аннулируется.

GuardedInvocation dropArguments​(int pos, Class<?>... valueTypes)

Вызывает обработчик, отбрасывая аргументы как в вызове, так и в страже (если он существует и имеет как минимум pos параметров) с помощью MethodHandles.dropArguments(MethodHandle, int, Class...).

GuardedInvocation dropArguments​(int pos, List<Class<?>> valueTypes)

Вызывает обработчик, отбрасывая аргументы как в вызове, так и в страже (если он существует и имеет как минимум pos параметров) с помощью MethodHandles.dropArguments(MethodHandle, int, List).

GuardedInvocation filterArguments​(int pos, MethodHandle... filters)

Применяет фильтры аргументов к вызову и стражу (если он существует и имеет как минимум pos + 1 параметров) с помощью MethodHandles.filterArguments(MethodHandle, int, MethodHandle...).

Class<? extends Throwable> getException()

Возвращает тип исключения, которое, если выбрасывается вызовом, должно аннулировать связь этого защищённого вызова.

MethodHandle getGuard()

Возвращает обработчик-страж.

MethodHandle getInvocation()

Возвращает обработчик вызова.

SwitchPoint[] getSwitchPoints()

Возвращает точки переключения, которые могут быть использованы для аннулирования связи этого обработчика вызова.

boolean hasBeenInvalidated()

Возвращает true тогда и только тогда, когда этот защищённый вызов имеет как минимум одну аннулированную точку переключения.

GuardedInvocation replaceMethods​(MethodHandle newInvocation, MethodHandle newGuard)

Создаёт новый защищённый вызов с другими методами, сохраняя точку переключения.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

GuardedInvocation

public GuardedInvocation(MethodHandle invocation)

Создаёт новый безусловный защищённый вызов. Он безусловный, так как не имеет недействительностей.

Параметры:
invocation - обработчик метода, представляющий вызов. Не должен быть null.
Исключения:
NullPointerException - если вызов равен null.

GuardedInvocation

public GuardedInvocation(MethodHandle invocation,
                         MethodHandle guard)

Создаёт новый защищённый вызов с обработчиком метода проверки.

Параметры:
invocation - обработчик метода, представляющий вызов. Не должен быть null.
guard - обработчик метода, представляющий проверку. Он должен быть совместим с обработчиком invocation согласно MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle). Для некоторых полезных проверок ознакомьтесь с классом 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 - обработчик метода, представляющий проверку. Он должен быть совместим с обработчиком invocation согласно MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle). Для некоторых полезных проверок ознакомьтесь с классом Guards. Может быть null. Если оно и точка переключения равны null, это обозначает безусловный вызов.
switchPoint - необязательная точка переключения, которая может быть использована для аннулирования этого связывания.
Исключения:
NullPointerException - если вызов равен null.

GuardedInvocation

public GuardedInvocation(MethodHandle invocation,
                         MethodHandle guard,
                         SwitchPoint switchPoint,
                         Class<? extends Throwable> exception)

Создаёт новый защищённый вызов с обработчиком метода проверки, точкой переключения, используемой для его аннулирования, и исключением, которое, если будет брошено при вызове, также аннулирует его.

Параметры:
invocation - обработчик метода, представляющий вызов. Не должен быть null.
guard - обработчик метода, представляющий проверку. Он должен быть совместим с обработчиком invocation согласно MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle). Для некоторых полезных проверок ознакомьтесь с классом Guards. Может быть null. Если оно, точка переключения и исключение равны null, это обозначает безусловный вызов.
switchPoint - необязательная точка переключения, которая может быть использована для аннулирования этого связывания.
exception - необязательный тип исключения, который, если будет брошен при вызове, также аннулирует его.
Исключения:
NullPointerException - если вызов равен null.

GuardedInvocation

public GuardedInvocation(MethodHandle invocation,
                         MethodHandle guard,
                         SwitchPoint[] switchPoints,
                         Class<? extends Throwable> exception)

Создаёт новый защищённый вызов с обработчиком метода проверки, любым количеством точек переключения, которые могут использоваться для его аннулирования, и исключением, которое, если будет брошено при вызове, также аннулирует его.

Параметры:
invocation - обработчик метода, представляющий вызов. Не должен быть null.
guard - обработчик метода, представляющий проверку. Он должен быть совместим с обработчиком invocation согласно MethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle). Для некоторых полезных проверок ознакомьтесь с классом Guards. Может быть null. Если оно и исключение равны null, а точки переключения не были указаны, это обозначает безусловный вызов.
switchPoints - необязательные точки переключения, которые могут использоваться для аннулирования этого связывания.
exception - необязательный тип исключения, который, если будет брошен при вызове, также аннулирует его.
Исключения:
NullPointerException - если вызов равен null.

Методы

getInvocation

public MethodHandle getInvocation()

Возвращает обработчик метода вызова.

Возвращает:
обработчик метода вызова. Никогда не будет null.

getGuard

public MethodHandle getGuard()

Возвращает обработчик метода защиты.

Возвращает:
обработчик метода защиты. Может быть null.

getSwitchPoints

public SwitchPoint[] getSwitchPoints()

Возвращает точки переключения, которые могут быть использованы для отмены привязки этого обработчика вызова.

Возвращает:
точки переключения, которые могут быть использованы для отмены привязки этого обработчика вызова. Может быть null.

getException

public Class<? 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). Если вызов уже имеет требуемый тип, возвращает этот объект.

Параметры:
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 параметров) с помощью 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)

Компонует вызов, защиту, точки переключения и исключение в составной обработчик метода, который знает, как перейти к резервному варианту, когда защита терпит неудачу или вызов становится недействительным.

Параметры:
switchpointFallback - резервный обработчик метода на случай, если точка переключения становится недействительной.
guardFallback - резервный обработчик метода на случай, если защита возвращает false.
catchFallback - резервный метод в случае срабатывания обработчика исключений.
Возвращает:
составной обработчик метода.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/jdk.dynalink/jdk/dynalink/linker/GuardedInvocation.html

Spec-Zone .ru
спецификации, руководства, описания, API