Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中有类似Objective-C块的东西吗?_Java_Objective C_Objective C Blocks - Fatal编程技术网

Java中有类似Objective-C块的东西吗?

Java中有类似Objective-C块的东西吗?,java,objective-c,objective-c-blocks,Java,Objective C,Objective C Blocks,我只是在学习Java,以前我用Objective-C开发过应用程序。我喜欢“块”的概念,因为它们允许代码在发生的事情之后运行 例如,要在SpriteKit应用程序中在一定时间后执行一个块,该应用程序从场景调用方法helloWorld: [myScene runAction:[SKAction sequence:@[[SKAction waitForDuration:5], [SKAction runBlock:^{ [myScene helloWorld]; }]]]]; Java中有

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

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

[myScene runAction:[SKAction sequence:@[[SKAction waitForDuration:5], [SKAction runBlock:^{
    [myScene helloWorld];
}]]]];
Java中有类似块的东西吗?如果是,我将如何使用它?什么是语法

  • 是否将其用作函数参数
  • 调用函数中的所述块
  • 是否为块指定一个值

我听说过一些“闭包”,但我不太确定它们是什么或如何使用它们。

在Java中,实现这一点的方法是使用接口。最基本的接口是
Runnable
,它有一个方法
run

什么是语法

是否将其用作函数参数

调用函数中的所述块

是否为块指定一个值

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

Runnable r = new Runnable() {
    @Override
    public void run() {
        // do something
    }
}
现在,您只需执行以下操作:

Runnable r = () -> { // do something }
涉及
->
的表达式称为lambda。brakets
()
是编写任何参数的地方,但是
Runnable
的方法
run
没有任何参数。您还可以将
Runnable
传递给方法,而不必提及
Runnable

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

Java 8引入了许多新的接口,在这些接口中,方法可以返回值或接受参数。

查看Java中的lambdas。在发布类似问题之前,请先查看。
Runnable r = () -> { // do something }
foo(() -> { // do something });