我有这样的功能
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;
答案 0 :(得分:2)
int getSum(List<Dish> list, ToIntFunction<Dish> function)
应该有效。
您必须了解Function
是一种通用类型。因此,您需要Function
个实例中的Dish
到Integer
(所以Function<Dish, Integer>
),但由于您使用mapToInt
,因此需要ToIntFunction
}(函数Dish -> int
)。
答案 1 :(得分:0)
如果您有一个将整数作为参数并返回字符串的函数,则函数中的参数将如下所示:
public void methodToCallFunctionFrom(Function<Integer, String> yourFunction) {
然后,当您在方法中调用函数时,它看起来像:
String s = yourFunction.apply(5);