Класс 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 |
Оптимизирует список компоновщиков с проверкой типа. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому объекту. |
protected void |
finalize() |
Устарело и подлежит удалению: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает значение хеш-кода для этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения определенного времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения определенного времени. |
Подробное описание конструкторов
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.