Интерфейс 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, 2020, 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/11/docs/api/jdk.dynalink/jdk/dynalink/linker/GuardingDynamicLinker.html