2017-03-17 56 views
0

我仍然在消化Java 8中的lambda概念。现在需要在我的服务中创建一个方法引用列表,其中有2个其他服务对象。这是需要采取什么用不同的目标对象创建方法引用列表?

Person person = new Person(); 
this.method1(person); 
service2.method2(person); 
service3.method3(person); 

所以列表应该有

0 -> this.method1, 
1 -> service2.method2, 
2 -> service3.method3, 

这是非常重要的this.class,服务2和服务3的没有新的实例被创建。不确定实现这一目标的最佳方式。我可以得到一些帮助吗?

回答

4

看起来你只是想要一个

List<Consumer<Person>> list = Arrays.asList(
    this::method1, service2::method2, service3::method3); 
for (Consumer<Person> action : list) { 
    action.accept(person); 
} 
+0

千恩万谢。这很好! – gigi2

+0

当我的单元测试它时,如果我的service2和service3是由Mockito.mock创建的,你有没有想过在列表中的service2.method2会调用mocked service2的method2?我不断收到'通缉令,但没有引用' – gigi2

+0

是的,那里应该没什么特别的。 –