Класс CompositeTypeBasedGuardingDynamicLinker
java.lang.Object
jdk.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker
- Все реализуемые интерфейсы:
GuardingDynamicLinker, TypeBasedGuardingDynamicLinker
public class CompositeTypeBasedGuardingDynamicLinker extends Object implements TypeBasedGuardingDynamicLinker
Составной динамический линкер с проверкой по типу. Когда встречается приемник класса, который ещё не встречался, у всех линкеров последовательно вызывается метод
TypeBasedGuardingDynamicLinker.canLinkType(Class). Линкеры, вернувшие true, привязываются к классу, и при следующей встрече приемника того же типа связывание делегируется только этим линкерам, что ускоряет диспетчеризацию.- Начиная с:
- 9
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
CompositeTypeBasedGuardingDynamicLinker |
Создаёт новый составной линкер с проверкой по типу. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
canLinkType |
Возвращает true, если хотя бы один из составных линкеров возвращает true из TypeBasedGuardingDynamicLinker.canLinkType(Class) для данного типа. |
GuardedInvocation |
getGuardedInvocation |
Создаёт защищённый вызов, подходящий для конкретного вызова с указанными аргументами в точке вызова. |
static List |
optimize |
Оптимизирует список линкеров с проверкой по типу. |
Подробное описание конструкторов
CompositeTypeBasedGuardingDynamicLinker
public CompositeTypeBasedGuardingDynamicLinker(Iterable<? extends TypeBasedGuardingDynamicLinker> linkers)
Создаёт новый составной линкер с проверкой по типу.
- Параметры:
-
linkers— линкеры-компоненты - Выбрасывает:
-
NullPointerException— еслиlinkersили любой из его элементов равен null.
Подробное описание методов
canLinkType
public boolean canLinkType(Class<?> type)
Возвращает true, если хотя бы один из составных линкеров возвращает true из
TypeBasedGuardingDynamicLinker.canLinkType(Class) для данного типа.- Определено в:
-
canLinkTypeв интерфейсеTypeBasedGuardingDynamicLinker - Параметры:
-
type— тип для связывания - Возвращает:
- true, если хотя бы один из составных линкеров возвращает true из
TypeBasedGuardingDynamicLinker.canLinkType(Class), в противном случае false.
getGuardedInvocation
public GuardedInvocation getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices) throws Exception
Описание скопировано из интерфейса:
GuardingDynamicLinkerСоздаёт защищённый вызов, подходящий для конкретного вызова с указанными аргументами в точке вызова.
- Определено в:
-
getGuardedInvocationв интерфейсеGuardingDynamicLinker - Параметры:
-
linkRequest— объект, описывающий запрос на связывание конкретного вызова -
linkerServices— службы линкера - Возвращает:
- защищённый вызов с дескриптором метода, подходящим для аргументов, а также с условием защиты, при невыполнении которого должно выполняться повторное связывание. Должен возвращать null, если не удаётся разрешить вызов. Если возвращаемый вызов является безусловным (что встречается довольно редко), защита в возвращаемом значении может быть null. Вызов также может содержать любое количество точек переключения для асинхронной инвалидации связывания, а также подкласс
Throwable, описывающий ожидаемое исключение, которое также приводит к повторному связыванию (часто быстрее полагаться на редкое, но ожидаемое исключениеClassCastException, чем на всегда проверяемую защитуinstanceof). Хотя линкер должен создавать вызов с типами параметров, совпадающими с типами в дескрипторе точки вызова запроса на связывание, ему не следует пытаться сопоставить тип возвращаемого значения с ожидаемым в точке вызова, кроме случаев, когда это можно сделать только с помощью преобразований, не приводящих к потере точности или диапазона значений; дополнительное объяснение см. в разделеLinkerServices.asTypeLosslessReturn(MethodHandle, MethodType). - Выбрасывает:
-
Exception— если операция не удаётся по какой-либо причине
optimize
public static List<GuardingDynamicLinker> optimize(Iterable<? extends GuardingDynamicLinker> linkers)
Оптимизирует список линкеров с проверкой по типу. Если группа соседних линкеров в списке реализует интерфейс
TypeBasedGuardingDynamicLinker, они будут заменены одним экземпляром CompositeTypeBasedGuardingDynamicLinker, содержащим их.- Параметры:
-
linkers— список линкеров для оптимизации - Возвращает:
- оптимизированный список
- Выбрасывает:
-
NullPointerException— еслиlinkersили любой из его элементов равен null.
© 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/support/CompositeTypeBasedGuardingDynamicLinker.html