Spec-Zone.ru › OpenJDK 24

Интерфейс GuardingTypeConverterFactory

public interface GuardingTypeConverterFactory
Необязательный интерфейс, который может быть реализован реализациями GuardingDynamicLinker для предоставления возможностей преобразования типов, специфичных для языка. Обратите внимание, что если вы реализуете этот интерфейс, вам, скорее всего, также потребуется реализовать интерфейс ConversionComparator, так как ваши дополнительные преобразования, специфичные для языка, в отсутствие стратегии для приоритезации этих преобразований, приведут к большей неоднозначности для BeansLinker при выборе правильной перегрузки при попытке связать перегруженный Java-метод.
Since:
9

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

Модификатор и тип Метод Описание
GuardedInvocation convertToType(Class<?> sourceType, Class<?> targetType, Supplier<MethodHandles.Lookup> lookupSupplier)
Возвращает защищённое преобразование типов, которое принимает значение указанного исходного типа и возвращает значение, преобразованное в указанный целевой тип.

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

convertToType

GuardedInvocation convertToType(Class<?> sourceType, Class<?> targetType, Supplier<MethodHandles.Lookup> lookupSupplier) throws Exception
Возвращает защищённое преобразование типов, которое принимает значение указанного исходного типа и возвращает значение, преобразованное в указанный целевой тип. Типы значений могут быть либо примитивными, либо ссылочными типами, включая интерфейсы, поэтому вы можете даже предоставить конвертеры для преобразования объектов вашего языка в Java-интерфейсы и классы, сгенерировав адаптеры для них.

Тип вызова - (sourceType)→targetType, а тип защиты - (sourceType)→boolean. Вы можете возвращать безусловные вызовы (без защиты), если исходный тип специфичен для вашей среды выполнения и только для неё.

Обратите внимание, что этот метод никогда не будет вызван для method invocation conversions, поскольку они могут быть автоматически применены MethodHandle.asType(MethodType). Реализация может предположить, что ей никогда не будет предложено создать конвертер для таких преобразований. Если среде выполнения языка необходимо настроить преобразования вызовов методов, она должна set an autoconversion strategy in the dynamic linker factory вместо этого.

Dynalink имеет право либо кэшировать некоторые из возвращенных конвертеров, либо повторно запрашивать у фабрики конвертеров создание тех же преобразований.

Parameters:
sourceType - исходный тип
targetType - целевой тип.
lookupSupplier - поставщик для получения поиска класса, от имени которого запрашивается преобразователь типов. Когда конвертер запрашивается как часть связывания инструкции invokedynamic, поставщик вернёт поиск, переданный методу инициализации, иначе, если метод вызывается изнутри LinkerServices.getWithLookup(Supplier, jdk.dynalink.SecureLookupSupplier), он делегирует запрос безопасному поставщику поиска. В любом другом случае, он вернёт публичный поиск. Типичный случай, когда может потребоваться поиск, - это когда конвертер создаёт класс адаптера Java на лету (например, для преобразования объекта из динамического языка в Java-интерфейс для взаимодействия).
Returns:
защищённый вызов, который может принять объект (если он пройдёт защиту) и вернуть другой объект, который является его представлением, приведённым к целевому типу. В случае, если фабрика уверена, что она не может обработать преобразование, она может вернуть null. В случае, если фабрика уверена, что всегда может обработать преобразование, она может вернуть безусловный вызов (вызов, у которого защита равна null).
Throws:
Exception - если при создании преобразователя произошла ошибка
See Also:
  • LinkerServices.getWithLookup(Supplier, SecureLookupSupplier)

© 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://download.java.net/java/early_access/jdk24/docs/api/jdk.dynalink/jdk/dynalink/linker/GuardingTypeConverterFactory.html

Spec-Zone.ru

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