将null函数作为参数传递给Java函数

问题描述 投票:0回答:1

我在理解如何将函数作为参数传递给方法时遇到问题。

在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)
        }
    }
}

有人可以帮助我获得对该主题的清晰理解吗?非常感谢。

java function class parameters void
1个回答
1
投票

如果要描述不返回值的函数,则可以使用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
};

© www.soinside.com 2019 - 2024. All rights reserved.