繁体   English   中英

Java 8 传递函数作为参数

[英]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是一个泛型类型。 所以在这里你想要一个FunctionDish实例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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM