Java中的完成处理程序?

Gui*_*rme 12 java completionhandler

我一直在为iOS编码,我对Objective-C中的块概念非常熟悉.现在我正在使用Java for Android并尝试将一些应用程序从Android转换为iOS.

我读到Java中没有完美的块相当,所以我想知道实现完成处理程序或任何可以起作用的东西的最佳替代方法.

ajb*_*ajb 23

一般来说,接口类型.如果你的处理程序没有参数和返回类型,你可以使用Runnable(这是一个interface)Rob建议的void.但是很容易定义自己的:

interface CompletionHandler {
    public void handle(String reason);
}
Run Code Online (Sandbox Code Playgroud)

然后将它传递给你自己的班级:

something.setCompletionHandler(new CompletionHandler() {
    @Override
    public void handle(String reason) {
        ...
    }
});
Run Code Online (Sandbox Code Playgroud)

在另一课:

void setCompletionHandler(CompletionHandler h) {
     savedHandler = h;
}
Run Code Online (Sandbox Code Playgroud)

然后通过调用方法调用它:

savedHandler.handle("Some mysterious reason");
Run Code Online (Sandbox Code Playgroud)

这种事情是为Java Swing和Android库中的"听众"完成的; View.OnClickListener例如,看看 .

(PS我相信Java 8 lambdas可用于所有这些接口示例.)