Класс GuardedInvocation
java.lang.Object
jdk.dynalink.linker.GuardedInvocation
public class GuardedInvocation extends Object
Представляет условно допустимый дескриптор метода. Обычно возвращается методами
GuardingDynamicLinker.getGuardedInvocation(LinkRequest, LinkerServices) и GuardingTypeConverterFactory.convertToType(Class, Class, Supplier). Это неизменяемый кортеж, состоящий из дескриптора вызываемого метода, дескриптора метода-стража, определяющего применимость вызываемого дескриптора, нуля или более точек переключения, которые можно использовать для внешней инвалидации вызываемого дескриптора, и типа исключения, выбрасывание которого при вызове дескриптора также делает его недействительным. Вызываемый дескриптор можно вызывать, если дескриптор стража возвращает true для своих аргументов, ни одна из точек переключения не инвалидирована и не выбрасывается исключение указанного типа. Страж, точки переключения и тип исключения необязательны (защищённый вызов без них является безусловно допустимым).- Начиная с:
- 9
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
GuardedInvocation |
Создаёт новый безусловный защищённый вызов. |
GuardedInvocation |
Создаёт новый защищённый вызов с дескриптором метода-стража. |
GuardedInvocation |
Создаёт новый защищённый вызов с дескриптором метода-стража и точкой переключения, которую можно использовать для его инвалидации. |
GuardedInvocation |
Создаёт новый защищённый вызов с дескриптором метода-стража, любым количеством точек переключения, которые можно использовать для его инвалидации, и исключением, выбрасывание которого при вызове также делает его недействительным. |
GuardedInvocation |
Создаёт новый защищённый вызов с дескриптором метода-стража, точкой переключения, которую можно использовать для его инвалидации, и исключением, выбрасывание которого при вызове также делает его недействительным. |
GuardedInvocation |
Создаёт новый защищённый вызов, который можно инвалидировать с помощью точки переключения. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
GuardedInvocation |
addSwitchPoint |
Создаёт новый защищённый вызов с добавленной точкой переключения. |
GuardedInvocation |
asType |
Изменяет тип вызова так, как если бы к его вызову и его стражу, если он есть, был применён метод MethodHandle.asType(MethodType) (тип возвращаемого значения стража изменяется на boolean, а количество его параметров может быть сокращено). |
GuardedInvocation |
asType |
Изменяет тип вызова так, как если бы к его вызову и его стражу, если он есть, был применён метод MethodHandle.asType(MethodType) (тип возвращаемого значения стража изменяется на boolean). |
GuardedInvocation |
asType |
Изменяет тип вызова так, как если бы к его вызову и его стражу, если он есть, был применён метод LinkerServices.asType(MethodHandle, MethodType) (тип возвращаемого значения стража изменяется на boolean, а количество его параметров может быть сокращено). |
GuardedInvocation |
asTypeSafeReturn |
Изменяет тип вызова так, как если бы к его вызову был применён метод LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType), а к его стражу, если он есть, — метод LinkerServices.asType(MethodHandle, MethodType) (тип возвращаемого значения стража изменяется на boolean, а количество его параметров может быть сокращено). |
MethodHandle |
compose |
Объединяет вызов, страж, точки переключения и исключение в составной дескриптор метода, который умеет переключаться на запасной вариант, если проверка стража не пройдена или вызов инвалидирован. |
MethodHandle |
compose |
Объединяет вызов, страж, точки переключения и исключение в составной дескриптор метода, который умеет переключаться на запасной вариант, если проверка стража не пройдена или вызов инвалидирован. |
GuardedInvocation |
dropArguments |
Создаёт вызов, отбрасывающий аргументы как при вызове, так и при проверке стража (если он существует и имеет не менее pos параметров), с помощью MethodHandles.dropArguments(MethodHandle, int, Class...). |
GuardedInvocation |
dropArguments |
Создаёт вызов, отбрасывающий аргументы как при вызове, так и при проверке стража (если он существует и имеет не менее pos параметров), с помощью MethodHandles.dropArguments(MethodHandle, int, List). |
GuardedInvocation |
filterArguments |
Применяет фильтры аргументов как к вызову, так и к стражу (если он существует и имеет не менее pos + 1 параметров) с помощью MethodHandles.filterArguments(MethodHandle, int, MethodHandle...). |
Class |
getException() |
Возвращает тип исключения, выбрасывание которого при вызове должно инвалидировать связь этого защищённого вызова. |
MethodHandle |
getGuard() |
Возвращает дескриптор метода-стража. |
MethodHandle |
getInvocation() |
Возвращает дескриптор вызываемого метода. |
SwitchPoint[] |
getSwitchPoints() |
Возвращает точки переключения, которые можно использовать для инвалидации связи этого дескриптора вызова. |
boolean |
hasBeenInvalidated() |
Возвращает true тогда и только тогда, когда хотя бы одна точка переключения этого защищённого вызова инвалидирована. |
GuardedInvocation |
replaceMethods |
Создаёт новый защищённый вызов с другими методами, сохраняя точку переключения. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Определяет, является ли другой объект «равным» этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация признана устаревшей и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного интервала реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного интервала реального времени. |
Подробное описание конструкторов
GuardedInvocation
public GuardedInvocation(MethodHandle invocation)
Создаёт новый безусловный защищённый вызов. Он является безусловным, поскольку не имеет условий инвалидации.
- Параметры:
-
invocation— дескриптор метода, представляющий вызов. Не должен быть null. - Исключения:
-
NullPointerException— если invocation равен null.
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, MethodHandle guard)
Создаёт новый защищённый вызов с дескриптором метода-стража.
- Параметры:
-
invocation— дескриптор метода, представляющий вызов. Не должен быть null. -
guard— дескриптор метода, представляющий страж. Должен быть совместим с дескрипторомinvocationсогласноMethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle). Примеры полезных стражей см. в классеGuards. Может быть null, что означает безусловный вызов. - Исключения:
-
NullPointerException— если invocation равен null.
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, SwitchPoint switchPoint)
Создаёт новый защищённый вызов, который можно инвалидировать с помощью точки переключения.
- Параметры:
-
invocation— дескриптор метода, представляющий вызов. Не должен быть null. -
switchPoint— необязательная точка переключения, которую можно использовать для инвалидации этой связи. Может быть null. Если она равна null, это означает безусловный вызов. - Исключения:
-
NullPointerException— если invocation равен null.
GuardedInvocation
public GuardedInvocation(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint)
Создаёт новый защищённый вызов с дескриптором метода-стража и точкой переключения, которую можно использовать для его инвалидации.
- Параметры:
-
invocation— дескриптор метода, представляющий вызов. Не должен быть null. -
guard— дескриптор метода, представляющий страж. Должен быть совместим с дескрипторомinvocationсогласноMethodHandles.guardWithTest(MethodHandle, MethodHandle, MethodHandle). Примеры полезных стражей см. в классеGuards. Может быть null. Если он и точка переключения равны null, это означает безусловный вызов. -
switchPoint— необязательная точка переключения, которую можно использовать для инвалидации этой связи. - Исключения:
-
NullPointerException— если invocation равен 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— если invocation равен 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— если invocation равен 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)
Объединяет вызов, страж, точки переключения и исключение в составной дескриптор метода, который умеет переключаться на запасной вариант, если проверка стража не пройдена или вызов инвалидирован.
- Параметры:
-
guardFallback— дескриптор запасного метода на случай, если страж возвращает false. -
switchpointFallback— дескриптор запасного метода на случай инвалидации точки переключения. -
catchFallback— запасной метод на случай срабатывания обработчика исключений. - Возвращает:
- составной дескриптор метода.
© 1993, 2025, 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.