2017-11-03 4 views
1

모든 보내는 MessageListenerContainer을에, 나는 람다 구문이 쓰기 위해 노력하고 있어요 :어떻게 몇 마디에 종료 람다

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

이 내 시도가이 람다 코드를 잘못 무엇입니까?

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

첫 번째 문을 컴파일하면'shutdown() '이후의'()'을 제거해야합니다. – luk2302

답변

1

당신이 가까이있어하지만 당신은 당신이 증기의 각 요소를 반복하고 shutdown 메소드를 호출 할 수있는 유형 DefaultMessageListenerContainer에 모든 항목을 캐스팅 할 수 map 먼저 활용해야합니다. 방법 참조를 사용하는 경우

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

또한, 당신은 메서드 이름 뒤에 괄호 ()을 사용할 수 없습니다.