简而言之,我尝试使用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);
同样,使用方法引用时,不能在方法名称后使用括号
()
。