Интерфейс 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 при вызове во время выполнения с именем, не соответствующим ни одному члену для методов-геттеров и молча проигнорирует переданные значения для методов-сеттеров. Реализация поведения, выбрасывающего исключение
Обратите внимание, что если язык-специфичное поведение для операции над отсутствующим членом заключается в выбросе исключения, то фабрика должна создать обработчик метода, который выбрасывает исключение при вызове и не должен сам выбрасывать исключение, так как связь для отсутствующего члена часто условная.- Since:
- 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://download.java.net/java/early_access/jdk24/docs/api/jdk.dynalink/jdk/dynalink/beans/MissingMemberHandlerFactory.html