Spec-Zone.ru › OpenJDK 25

Интерфейс GuardingDynamicLinker

Все известные подинтерфейсы:
TypeBasedGuardingDynamicLinker
Все известные реализующие классы:
BeansLinker, CompositeGuardingDynamicLinker, CompositeTypeBasedGuardingDynamicLinker
public interface GuardingDynamicLinker
Базовый интерфейс для специализированных для языка динамических линкеров. Такие линкеры всегда должны создавать дескрипторы методов с защитными условиями, поскольку пригодность дескриптора метода для вызовов в точке вызова неизбежно зависит от некоторого условия (как минимум, от принадлежности получателя к среде выполнения языка линкера). Реализаторы среды выполнения языка обычно реализуют логику связывания для собственного языка в виде одного или нескольких классов GuardingDynamicLinker. Обычно они задают их как prioritized linkers в DynamicLinkerFactory, который они настраивают для себя, и, возможно, также задают некоторые из них как fallback linkers для обработки специфичных для языка ситуаций, например «свойство не найдено».

Для линкеров, основанных на Java-классе объектов, рассмотрите возможность реализации интерфейса TypeBasedGuardingDynamicLinker вместо этого интерфейса. Если требуется реализовать преобразования типов, специфичные для языка, реализуйте также интерфейс GuardingTypeConverterFactory в GuardingDynamicLinker.

Языки могут предоставлять линкеры другим средам выполнения языков для automatic discovery с помощью GuardingDynamicLinkerExporter.

С версии:
9

Краткое описание методов

Модификатор и тип Метод Описание
GuardedInvocation getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices)
Создает защищенный вызов, подходящий для конкретного вызова с указанными аргументами в точке вызова.

Подробное описание методов

getGuardedInvocation

GuardedInvocation getGuardedInvocation(LinkRequest linkRequest, LinkerServices linkerServices) throws Exception
Создает защищенный вызов, подходящий для конкретного вызова с указанными аргументами в точке вызова.
Параметры:
linkRequest — объект, описывающий запрос на связывание конкретного вызова
linkerServices — службы линкера
Возвращает:
защищенный вызов с дескриптором метода, подходящим для аргументов, а также с защитным условием, при невыполнении которого должно запускаться повторное связывание. Если разрешить вызов не удается, необходимо вернуть null. Если возвращаемый вызов является безусловным (что на практике встречается довольно редко), защитное условие в возвращаемом значении может быть null. Вызов также может содержать любое количество точек переключения для асинхронной инвалидации связывания, а также подкласс Throwable, описывающий ожидаемое исключение, которое также запускает повторное связывание (часто быстрее полагаться на редко возникающее, но ожидаемое ClassCastException, чем на всегда проверяемое защитное условие instanceof). Хотя линкер должен создавать вызов с типами параметров, соответствующими типам в дескрипторе точки вызова запроса на связывание, ему не следует пытаться сопоставить ожидаемый в точке вызова тип возвращаемого значения, за исключением случаев, когда это можно сделать только с помощью преобразований, не приводящих к потере точности или диапазона значений. Дополнительные пояснения см. в разделе LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType).
Вызывает:
Exception — если операция не удалась по какой-либо причине

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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/GuardingDynamicLinker.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API