Java:接收指向其他方法(lambda)的指针的方法

标签 java c++ methods reference lambda

最近我一直在尝试熟悉 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/

相关文章:

java - Swing 和 Nimbus : Replace background of JPopupMenu (attached to JMenu)

c++ - 获取二维数组中数字的平均值、最小值和最大值

c++ - 对象方法的真实地址

objective-c - 计算 Cocoa-Touch 中调用方法的次数?

java - 使用 Java 将 HTML 文件读取到 DOM 树

java - 主应用程序线程会发生什么?

c++ - 如何设置 CMake 与 clang 交叉编译 Windows 上嵌入的 ARM?

java - 未定义的构造函数(java)

java - Ftp 文件下载 从 java 代码

c++ - 模板参数列表中的额外 typename 关键字 : is it valid or not?