最近我一直在尝试熟悉 Java 8 中 lambda 的用法。
我发现我可以将指向另一个方法的指针传递给某个方法,如下所示:
List<Integer> numbers = asList(1,2,3,4,5,6,7,8,9);
forEach(System.out::println, numbers);
这对我来说很清楚。
但是,如何创建一个需要这样的指针的方法?
它应该像在 eg 中那样工作吗? C++?还是我的期望值太大了?
最佳答案
期望方法引用的方法使用函数式接口(interface)作为它们的工具。
以numbers.forEach(System.out::println);
为例
forEach定义为:
void forEach(Consumer<? super T> action)
这意味着它需要一个符合 Consumer 的单一方法的方法引用或 lambda 表达式。功能接口(interface)。
Consumer<T>
有一个方法 - void accept(T t) .
这意味着它需要一个需要单个参数且没有返回值的方法。
System.out::println
符合这个要求。
关于Java:接收指向其他方法(lambda)的指针的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27183429/