Класс GuardedInvocation
- 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) | Создаёт новый защищённый вызов с обработчиком-стражем. |
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) | Изменяет тип вызова, как если бы |
GuardedInvocation | asType(CallSiteDescriptor desc) | Изменяет тип вызова, как если бы |
GuardedInvocation | asType(LinkerServices linkerServices,
MethodType newType) | Изменяет тип вызова, как если бы |
GuardedInvocation | asTypeSafeReturn(LinkerServices linkerServices,
MethodType newType) | Изменяет тип вызова, как если бы |
MethodHandle | compose(MethodHandle fallback) | Компонует вызов, страж, точки переключения и исключение в составной обработчик метода, который знает, как выполнить обратный вызов, когда страж терпит неудачу или вызов аннулируется. |
MethodHandle | compose(MethodHandle guardFallback,
MethodHandle switchpointFallback,
MethodHandle catchFallback) | Компонует вызов, страж, точки переключения и исключение в составной обработчик метода, который знает, как выполнить обратный вызов, когда страж терпит неудачу или вызов аннулируется. |
GuardedInvocation | dropArguments(int pos,
Class<?>... valueTypes) | Вызывает обработчик, отбрасывая аргументы как в вызове, так и в страже (если он существует и имеет как минимум |
GuardedInvocation | dropArguments(int pos,
List<Class<?>> valueTypes) | Вызывает обработчик, отбрасывая аргументы как в вызове, так и в страже (если он существует и имеет как минимум |
GuardedInvocation | filterArguments(int pos,
MethodHandle... filters) | Применяет фильтры аргументов к вызову и стражу (если он существует и имеет как минимум |
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