Java 返回void并传递布尔参数的函数接口
我正在使一个方法在另一个线程中执行,因为它可能需要时间。但是,我想通知调用方,操作将完成,如果成功。为此,我需要一个不返回任何内容(我不需要回调结果)并传递布尔值的函数接口 示例代码:Java 返回void并传递布尔参数的函数接口,java,functional-interface,Java,Functional Interface,我正在使一个方法在另一个线程中执行,因为它可能需要时间。但是,我想通知调用方,操作将完成,如果成功。为此,我需要一个不返回任何内容(我不需要回调结果)并传递布尔值的函数接口 示例代码: public boolean send(Command command) { try { //long stuff return true; } catch(Exception ex) { //logging error return
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中,还是我必须自己创建一个?方法void调用(布尔成功)
可以表示为void-accept(布尔b)
,它内置于Java中。这将允许您避免创建自己的功能接口
因此:
public void sendAsync(Command command, Consumer<Boolean> callback) {
new Thread(() -> {
boolean successful = send(command);
if(callback != null)
callback.accept(successful);
}).start();
}
public void sendsync(命令,使用者回调){
新线程(()->{
布尔成功=发送(命令);
if(回调!=null)
callback.accept(成功);
}).start();
}
方法void调用(布尔成功)
可以用内置于java中的asvoid accept(布尔b)
表示。这将允许您避免创建自己的功能接口
因此:
public void sendAsync(Command command, Consumer<Boolean> callback) {
new Thread(() -> {
boolean successful = send(command);
if(callback != null)
callback.accept(successful);
}).start();
}
public void sendsync(命令,使用者回调){
新线程(()->{
布尔成功=发送(命令);
if(回调!=null)
callback.accept(成功);
}).start();
}
如果返回void,您如何知道该操作成功?@JakeMiller功能接口没有执行该操作,它只是报告该操作是否成功并在实际操作之后执行。是什么阻止您自己定义该操作?如果你不需要结果,那么为什么你有一个参数?@cricket\u 007来提高清晰度。我不喜欢重新创建Java标准库中可用的对象。我还提供了一个示例代码来解释。我知道你要问的问题存在于RxJava中,但是可调用的是在Java8标准库中最接近的。如果它返回void,你怎么知道该操作是成功的?@JakeMiller函数接口没有执行该操作,它只是报告操作是否成功,并且在实际操作之后执行。是什么阻止您自己定义此操作?如果你不需要结果,那么为什么你有一个参数?@cricket\u 007来提高清晰度。我不喜欢重新创建Java标准库中可用的对象。我还提供了一个示例代码来解释。我知道您要问的问题存在于RxJava中,但是可调用的
是最接近Java8标准库的