Интерфейс GuardingTypeConverterFactory
public interface GuardingTypeConverterFactory
GuardingDynamicLinker, чтобы предоставить возможности преобразования типов, специфичные для языка. Обратите внимание: если вы реализуете этот интерфейс, вам, скорее всего, также потребуется реализовать интерфейс ConversionComparator, поскольку дополнительные преобразования, специфичные для языка, при отсутствии стратегии определения их приоритета приведут к большей неоднозначности для BeansLinker при выборе правильной перегрузки для связывания с перегруженным методом Java.- Начиная с версии:
- 9
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
GuardedInvocation |
convertToType |
Возвращает защищённое преобразование типа, которое принимает значение указанного исходного типа и возвращает значение, преобразованное в указанный целевой тип. |
Подробное описание методов
convertToType
GuardedInvocation convertToType(Class<?> sourceType, Class<?> targetType, Supplier<MethodHandles.Lookup> lookupSupplier) throws Exception
Тип вызова — (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— если при создании преобразователя произошла ошибка - См. также:
© 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