返回void并传递布尔参数的函数接口

时间:2016-12-27 16:32:18

标签: java functional-interface

我正在制作一个方法,以便在另一个线程中执行,因为它可能需要时间。但是,我想通知调用者操作将完成并且是否成功。为此,我需要一个不返回任何内容的函数接口(我不需要回调的结果)并传递一个布尔值。

示例代码:

public boolean send(Command command) {
    try {
        //long stuff
        return true;
    } catch(Exception ex) {
        //logging error
        return false;
    }
}

public void sendAsync(Command command, MyCallback callback) {
    new Thread(() -> {
        boolean successful = send(command);
        if(callback != null)
            callback.call(successful);
    }).start();
}

类似的东西:

void call(boolean successful);

它是否已经存在于Java中,或者我是否必须自己创建一个?

1 个答案:

答案 0 :(得分:4)

方法void call(boolean successful)可以用Consumer<Boolean>表示为void accept(Boolean b),它构建在java中。这样就可以避免必须创建自己的功能界面。

因此:

public void sendAsync(Command command, Consumer<Boolean> callback) {
    new Thread(() -> {
        boolean successful = send(command);
        if(callback != null)
            callback.accept(successful);
    }).start();
}