Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Определяет, является ли другой объект «равным» этому объекту.
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(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного интервала реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова 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 — запасной метод на случай срабатывания обработчика исключений.
Возвращает:
составной дескриптор метода.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, 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.

Spec-Zone.ru

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