我在理解如何将函数作为参数传递给方法时遇到问题。
在StackOverflow和StackExchange上进行搜索使我找到了使用java.util.Functions
的解决方案
public void someFunction(Functions <int[], int[]> myFunction);
((来源:https://codereview.stackexchange.com/questions/186972/passing-a-generic-function-as-parameter)
尽管此解决方案对我来说似乎很好,但是当我需要传递一个旨在不执行任何操作的函数时,我遇到了问题。为了更好地理解,请考虑以下示例:
public class Example {
//do stuffs
myFunction(null);
}
public class Manager {
public void myFunction(Function<int[], void> funcToPass) { // Can't specify void as return value!
//do stuff
if(funcToPass != null) { // can't replicate such behaviour
funcToPass(someParams)
}
}
}
有人可以帮助我获得对该主题的清晰理解吗?非常感谢。
如果要描述不返回值的函数,则可以使用Void
类型。这是标准的Java类,但打算在这种情况下使用。
例如
Function<String, Void> stringPrinter = s -> {
System.out.println(s);
return null; // must return some value, null is acceptable since the value is never read
};