Интерфейс 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, 2021, 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/17/docs/api/jdk.dynalink/jdk/dynalink/beans/MissingMemberHandlerFactory.html