Spec-Zone.ru › OpenJDK 25

Класс 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(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)
Создаёт новый защищённый вызов с другими методами, сохраняя точку переключения.

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

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

Подробное описание конструкторов

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 — запасной метод на случай срабатывания обработчика исключений.
Возвращает:
составной дескриптор метода.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/jdk.dynalink/jdk/dynalink/linker/GuardedInvocation.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API