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