Интерфейс 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 при вызове в ходе выполнения с именем, не соответствующим ни одному члену для методов-геттеров и молча проигнорирует переданные значения для методов-сеттеров. Реализация поведения, выбрасывающего исключение
Обратите внимание, что если поведение языка для операции с отсутствующим членом заключается в выбрасывании исключения, то фабрика должна создать обработчик метода, который выбрасывает исключение при вызове, и не должна выбрасывать исключение сама, так как связывание для отсутствующего члена часто условно.- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
MethodHandle |
createMissingMemberHandler |
Возвращает обработчик метода, подходящий для реализации поведения отсутствующего члена для конкретного запроса на связывание. |
Подробное описание методов
createMissingMemberHandler
MethodHandle createMissingMemberHandler(LinkRequest linkRequest, LinkerServices linkerServices) throws Exception
Возвращает обработчик метода, подходящий для реализации поведения отсутствующего члена для конкретного запроса на связывание. См. описание класса для получения подробностей.
- Параметры:
-
linkRequest- текущий запрос на связывание -
linkerServices- текущие сервисы связывания - Возвращаемое значение:
- обработчик метода, который можно вызвать, если свойство, элемент или метод, на которые ссылается операция, отсутствуют. Возвращаемое значение может быть null.
- Исключения:
-
Exception- если операция завершится неудачей по какой-либо причине. Пожалуйста, обратитесь к примечаниям документации класса для реализации поведения, выбрасывающего исключение, при отсутствии члена.
© 1993, 2023, 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/21/docs/api/jdk.dynalink/jdk/dynalink/beans/MissingMemberHandlerFactory.html