最近,我一直在努力熟悉Java 8中lambda的用法 我发现我可以向某个方法传递指向另一个方法的指针,如下所示:
List<Integer> numbers = asList(1,2,3,4,5,6,7,8,9);
forEach(System.out::println, numbers);
这对我来说很清楚
但是,如何创建一个需要这种指针的方法?
它应该像在例如。 C ++?或许我的期望太大了?
答案 0 :(得分:3)
期望方法引用的方法使用功能接口作为它们的批评。
例如numbers.forEach(System.out::println);
forEach定义为:
void forEach(Consumer<? super T> action)
这意味着它需要一个符合Consumer功能接口的单个方法的方法引用或lambda表达式。
Consumer<T>
只有一种方法 - void accept(T t)。
这意味着它需要一个需要单个参数且没有返回值的方法。
System.out::println
符合此要求。
答案 1 :(得分:2)
我可以传递给某个方法,指向另一个方法的指针
没有。那不是你在做什么。使用方法引用语法,您将传递一个类的实例,该类实现了一些目标功能接口和引用方法的主体。
但是如何创建期望这样的指针的方法呢?
您可以创建一个参数具有适当功能接口类型的方法。
答案 2 :(得分:0)