[英]Java 8 pass function as parameter
我有这样的功能
int getSum(List<Dish>> list, Function function) { //function is not used yet
...
int sum = list.stream().mapToInt(Dish::getA1).sum();
...
return sum;
}
我想向它传递一个函数,以便我可以在函数中执行此操作,其中函数可以是 Dish::getA1、Dish::getA2 等。
int getSum(List<Dish>> list, Function function) { //function is used
...
int sum = list.stream().mapToInt(function).sum();
...
return sum;
}
我的问题是如何制作这个功能? 这不起作用:
Function func = Dish::getA1;
int getSum(List<Dish> list, ToIntFunction<Dish> function)
应该有效。
你必须明白Function
是一个泛型类型。 所以在这里你想要一个Function
从Dish
实例Integer
(所以Function<Dish, Integer>
),但由于您使用mapToInt
,它需要一个ToIntFunction
(功能Dish -> int
)。
如果您有一个将整数作为参数并返回字符串的函数,则您的函数中的参数将如下所示:
public void methodToCallFunctionFrom(Function<Integer, String> yourFunction) {
然后当你在方法中调用函数时,它看起来像:
String s = yourFunction.apply(5);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.