Интерфейс MissingMemberHandlerFactory
- Функциональный интерфейс:
- Это функциональный интерфейс, поэтому его можно использовать в качестве целевого типа для лямбда-выражения или ссылки на метод.
@FunctionalInterface public interface MissingMemberHandlerFactory
Фабрика для создания дескрипторов методов, реализующих поведение для связывания отсутствующих членов в
BeansLinker. BeansLinker связывает эти дескрипторы методов с охраняемыми вызовами для запросов на связывание, указывающих GET_* и SET_* StandardOperation, когда достоверно известно или возможно, что запрошенный член (свойство, метод или элемент) отсутствует. Они связываются как для именованных, так и для безымянных операций named. Реализатор должен обеспечить соответствие типов параметров возвращаемого дескриптора метода типам параметров точки вызова, описанной в запросе на связывание. Типы возвращаемых значений могут различаться, чтобы разрешить поздние преобразования типа возвращаемого значения в DynamicLinkerFactory.setPrelinkTransformer(jdk.dynalink.linker.GuardedInvocationTransformer). Если достаточно поведения по умолчанию, для дескриптора метода разрешается вернуть null. Поведение по умолчанию для отсутствующего члена
Если дляBeansLinker не настроена фабрика обработчиков отсутствующих членов или фабрика возвращает null при создании конкретного обработчика, используется поведение по умолчанию. Поведение по умолчанию заключается в том, чтобы вернуть null из BeansLinker.getGuardedInvocation(LinkRequest, LinkerServices), когда во время связывания можно определить, что связанная операция никогда не будет обращаться к существующему члену. Это позволяет DynamicLinker попробовать следующий связыватель, если он есть, или в конечном счёте завершить запрос на связывание ошибкой NoSuchDynamicMethodException. В остальных случаях (как правило, для всех безымянных операций с членами, а также для большинства именованных операций с элементами коллекций) BeansLinker создаёт условную связь, которая при вызове во время выполнения вернёт null, если имя не соответствует ни одному члену для методов чтения, и будет молча игнорировать переданные значения для методов записи. Реализация поведения с выбрасыванием исключения
Обратите внимание: если согласно поведению конкретного языка операция над отсутствующим членом должна выбрасывать исключение, фабрика должна создавать дескриптор метода, который выбрасывает исключение при вызове, и сама не должна выбрасывать исключение, поскольку связывание для отсутствующего члена часто является условным.- Начиная с версии:
- 9
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
MethodHandle |
createMissingMemberHandler |
Возвращает дескриптор метода, подходящий для реализации поведения при отсутствии члена для конкретного запроса на связывание. |
Подробное описание методов
createMissingMemberHandler
MethodHandle createMissingMemberHandler(LinkRequest linkRequest, LinkerServices linkerServices) throws Exception
Возвращает дескриптор метода, подходящий для реализации поведения при отсутствии члена для конкретного запроса на связывание. Подробности см. в описании класса.
- Параметры:
-
linkRequest— текущий запрос на связывание -
linkerServices— текущие службы связывания - Возвращает:
- дескриптор метода, который можно вызвать, если свойство, элемент или метод, к которому обращается операция, отсутствует. Возвращаемое значение может быть 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/beans/MissingMemberHandlerFactory.html