Класс GuardedInvocation
java.lang.Object
jdk.dynalink.linker.GuardedInvocation
public class GuardedInvocation extends Object
Представляет условно допустимый обработчик методов. Обычно создается в качестве возвращаемого значения
GuardingDynamicLinker.getGuardedInvocation(LinkRequest, LinkerServices) и GuardingTypeConverterFactory.convertToType(Class, Class, Supplier). Это неизменяемая кортеж из обработчика вызова метода, обработчика-защиты, определяющего применимость обработчика вызова, нуля или более точек переключения, которые могут использоваться для внешней проверки работоспособности обработчика вызова, и типа исключения, которое, если возникает во время вызова обработчика метода, также делает его неработоспособным. Обработчик вызова подходит для вызова, если обработчик-защита возвращает true для своих аргументов, и пока ни одна из точек переключения не стала неработоспособной, и пока не возникло исключение указанного типа. Защита, точки переключения и тип исключения являются необязательными (защищенный вызов, у которого нет ни одного из них, является безусловно допустимым).Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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<? extends Throwable> |
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:
-
switchpointFallback- обработчик методов по умолчанию на случай, если точка переключения становится недействительной. -
guardFallback- обработчик методов по умолчанию на случай, если условие вернуло false. -
catchFallback- обработчик методов по умолчанию в случае срабатывания обработчика исключений. - Returns:
- составной обработчик методов.
© 1993, 2021, 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/17/docs/api/jdk.dynalink/jdk/dynalink/linker/GuardedInvocation.html