Класс 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<GuardingDynamicLinker> |
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, 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/support/CompositeTypeBasedGuardingDynamicLinker.html