首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中有类似Objective块的东西吗?

问Java中有类似Objective块的东西吗?
EN

Stack Overflow用户
提问于 2015-10-07 16:42:29
回答 1查看 306关注 0票数 2

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

例如,在SpriteKit应用程序中执行块,该应用程序调用场景myScene中的方法helloWorld

代码语言:javascript
复制
[myScene runAction:[SKAction sequence:@[[SKAction waitForDuration:5], [SKAction runBlock:^{
    [myScene helloWorld];
}]]]];

在Java中有类似于块的东西吗?如果是的话,我将如何使用它?语法是什么..。

  • 用它作为函数参数?
  • 打电话给功能中的阻塞?
  • 给这个块分配一个值?

我听说过一些关于“闭包”的内容,但我不太确定它们是什么,也不知道如何使用它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-07 16:57:31

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

语法是什么..。 用它作为函数参数?

代码语言:javascript
复制
void foo(Runnable r)

打电话给功能中的阻塞?

代码语言:javascript
复制
r.run();

给这个块分配一个值?

在Java 8之前,您必须这样做:

代码语言:javascript
复制
Runnable r = new Runnable() {
    @Override
    public void run() {
        // do something
    }
}

现在你可以做的就是:

代码语言:javascript
复制
Runnable r = () -> { // do something }

涉及->的表达式称为lambda。brakets ()是编写任何参数的地方,但是Runnable的方法run没有任何参数。您也可以将Runnable传递给方法,而无需提及Runnable。

代码语言:javascript
复制
foo(() -> { // do something });

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32997887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档