繁体   English   中英

Java中是否有类似Objective-C的块?

[英]Is there anything like an Objective-C block in Java?

我只是在学习Java,之前我已经在Objective-C中开发过应用程序。 我喜欢“块”的概念,因为它们允许代码在发生某些事情后运行。

例如,要在SpriteKit应用程序中经过一定时间后执行一个块,该应用程序会从场景myScene调用方法helloWorld

[myScene runAction:[SKAction sequence:@[[SKAction waitForDuration:5], [SKAction runBlock:^{
    [myScene helloWorld];
}]]]];

Java中是否有类似于块的内容? 如果是这样,我将如何使用它? 什么是...的语法

  • 用它作为函数参数?
  • 在函数中调用所说的块?
  • 给块分配一个值?

我听说过一些有关“封闭件”的信息,但我不确定它们是什么或如何使用。

在Java中,执行此操作的方法是使用接口。 最基本的接口是Runnable ,它具有方法run

什么是...的语法

用它作为函数参数?

void foo(Runnable r)

在函数中调用所说的块?

r.run();

给块分配一个值?

在Java 8之前,您必须执行以下操作:

Runnable r = new Runnable() {
    @Override
    public void run() {
        // do something
    }
}

现在您可以执行以下操作:

Runnable r = () -> { // do something }

包含->的表达式称为lambda。 Braket ()是您可以编写任何参数的位置,但是Runnable的方法run没有任何参数。 您还可以将Runnable传递给方法,而无需提及Runnable

foo(() -> { // do something });

Java 8引入了许多新接口,该方法可以返回值或接受参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM