Класс GuardedInvocation
java.lang.Object
jdk.dynalink.linker.GuardedInvocation
public class GuardedInvocation extends Object
Представляет условно допустимый обработчик метода. Обычно возвращается в качестве значения из
GuardingDynamicLinker.getGuardedInvocation(LinkRequest, LinkerServices) и GuardingTypeConverterFactory.convertToType(Class, Class, Supplier). Он представляет собой неизменяемую кортеж из обработчика вызова метода, обработчика проверки, определяющего применимость обработчика вызова, нуля или более точек переключения, которые могут использоваться для внешнего аннулирования обработчика вызова, и типа исключения, которое, если будет брошено во время вызова обработчика метода, также аннулирует его. Обработчик вызова пригоден для вызова, если обработчик проверки возвращает true для его аргументов, и пока ни одна из точек переключения не аннулирована, и пока не будет брошено исключение указанного типа. Проверка, точки переключения и тип исключения являются необязательными (защищённый вызов, не имеющий ни одного из них, является безусловно допустимым).- Since:
- 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 |
Создаёт новый защищённый вызов с другими методами, сохраняя точку переключения. |
Подробное описание конструкторов
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, а количество параметров может быть укорочено). Если тип вызова не изменится, возвращает этот объект.- Parameters:
-
linkerServices— используемые для преобразования сервисы линкера -
newType— новый тип вызова. - Returns:
- защищённый вызов с применённым новым типом.
asType
public GuardedInvocation asType(CallSiteDescriptor desc)
Изменяет тип вызова, как если бы
MethodHandle.asType(MethodType) был применён к его вызову и его защите, если она есть (при этом тип возвращаемого значения для защиты изменится на boolean). Если вызов уже имеет требуемый тип, возвращает этот объект.- Parameters:
-
desc— описание места вызова, тип метода которого адаптируется. - Returns:
- защищённый вызов с применённым новым типом.
filterArguments
public GuardedInvocation filterArguments(int pos, MethodHandle... filters)
Применяет фильтры аргументов как к вызову, так и к защите (если она существует и имеет как минимум
pos + 1 параметров) с помощью MethodHandles.filterArguments(MethodHandle, int, MethodHandle...).- Parameters:
-
pos— позиция первого фильтруемого аргумента -
filters— фильтры аргументов - Returns:
- отфильтрованный вызов
dropArguments
public GuardedInvocation dropArguments(int pos, List<Class<?>> valueTypes)
Создаёт вызов, который отбрасывает аргументы как в вызове, так и в защите (если она существует и имеет как минимум
pos параметров) с помощью MethodHandles.dropArguments(MethodHandle, int, List).- Parameters:
-
pos— позиция первого отбрасываемого аргумента -
valueTypes— типы отбрасываемых значений - Returns:
- вызов, отбрасывающий аргументы
dropArguments
public GuardedInvocation dropArguments(int pos, Class<?>... valueTypes)
Создаёт вызов, который отбрасывает аргументы как в вызове, так и в защите (если она существует и имеет как минимум
pos параметров) с помощью MethodHandles.dropArguments(MethodHandle, int, Class...).- Parameters:
-
pos— позиция первого отбрасываемого аргумента -
valueTypes— типы отбрасываемых значений - Returns:
- вызов, отбрасывающий аргументы
compose
public MethodHandle compose(MethodHandle fallback)
Компонует вызов, защиту, точки переключения и исключение в составной обработчик методов, который знает, как обработать ситуацию, когда защита завершится неудачно или вызов будет недействительным.
- Parameters:
-
fallback— обработчик методов по умолчанию на случай, если точка переключения станет недействительной, защита вернёт false или возникнет необрабатываемое исключение. - Returns:
- составной обработчик методов.
compose
public MethodHandle compose(MethodHandle guardFallback, MethodHandle switchpointFallback, MethodHandle catchFallback)
Компонует вызов, защиту, точки переключения и исключение в составной обработчик методов, который знает, как обработать ситуацию, когда защита завершится неудачно или вызов будет недействительным.
- Parameters:
-
guardFallback— обработчик методов по умолчанию на случай, если защита вернёт false. -
switchpointFallback— обработчик методов по умолчанию на случай, если точка переключения станет недействительной. -
catchFallback— обработчик по умолчанию на случай срабатывания обработчика исключений. - Returns:
- составной обработчик методов.
© 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://download.java.net/java/early_access/jdk24/docs/api/jdk.dynalink/jdk/dynalink/linker/GuardedInvocation.html