Spec-Zone.ru › OpenJDK 17

Интерфейс GuardingDynamicLinker

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

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

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

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

Модификатор и тип Метод Описание
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 - если операция завершается неудачно по любой причине

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

Spec-Zone.ru

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