[英]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.