DefaultMessageListenerContainer

DefaultMessageListenerContainer

简而言之,我尝试使用lambda语法编写此代码:

bean = context.getBean(JmsListenerEndpointRegistry.class);
for (MessageListenerContainer listenerContainer : bean.getListenerContainers()) {
    DefaultMessageListenerContainer container = (DefaultMessageListenerContainer) listenerContainer;
    container.shutdown();
}


这是我的尝试,此Lambda代码有什么问题?

context.getBean(JmsListenerEndpointRegistry.class).getListenerContainers()
                  .forEach(DefaultMessageListenerContainer::shutdown());

最佳答案

您已经接近了,但是您需要首先利用map将所有项目转换为类型DefaultMessageListenerContainer,然后可以遍历Steam的每个元素并调用其shutdown方法。

bean = context.getBean(JmsListenerEndpointRegistry.class);
bean.getListenerContainers().stream().map(e -> (DefaultMessageListenerContainer)e)
                    .forEach(DefaultMessageListenerContainer::shutdown);


同样,使用方法引用时,不能在方法名称后使用括号()

07-24 09:16