Spec-Zone.ru › OpenJDK 25

Интерфейс GuardingTypeConverterFactory

public interface GuardingTypeConverterFactory
Необязательный интерфейс, который могут реализовать реализации GuardingDynamicLinker, чтобы предоставить возможности преобразования типов, специфичные для языка. Обратите внимание: если вы реализуете этот интерфейс, вам, скорее всего, также потребуется реализовать интерфейс ConversionComparator, поскольку дополнительные преобразования, специфичные для языка, при отсутствии стратегии определения их приоритета приведут к большей неоднозначности для BeansLinker при выборе правильной перегрузки для связывания с перегруженным методом Java.
Начиная с версии:
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 может кэшировать некоторые из возвращённых преобразователей или повторно запрашивать у фабрики преобразователей создание одного и того же преобразования.

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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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/GuardingTypeConverterFactory.html

Spec-Zone.ru

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