Класс CompositeTypeBasedGuardingDynamicLinker
java.lang.Object
jdk.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker
- Все реализуемые интерфейсы:
-
GuardingDynamicLinker,TypeBasedGuardingDynamicLinker
public class CompositeTypeBasedGuardingDynamicLinker extends Object implements TypeBasedGuardingDynamicLinker
Составной динамический линкер, обеспечивающий проверку типа. Если встретится получатель класса, который ещё не был виден, все линковщики последовательно вызываются для метода
TypeBasedGuardingDynamicLinker.canLinkType(Class). Линковщики, вернувшие true, связываются с классом, и в следующий раз, когда встретится получатель того же типа, связывание делегируется только этим линковщикам, ускоряя обработку.Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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, 2023, 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/21/docs/api/jdk.dynalink/jdk/dynalink/linker/support/CompositeTypeBasedGuardingDynamicLinker.html