首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >作为参数的Java 8传递方法

作为参数的Java 8传递方法
EN

Stack Overflow用户
提问于 2014-08-07 23:18:48
回答 2查看 89.7K关注 0票数 73

目前正在研究Java 8的lambda表达式和方法引用。

我想将一个没有参数和返回值的方法作为参数传递给另一个方法。我是这样做的:

代码语言:javascript
复制
public void one() {
    System.out.println("one()");
}

public void pass() {
    run(this::one);
}

public void run(final Function function) {
    function.call();
}

@FunctionalInterface
interface Function {
    void call();
}

我知道在java.util.function中有一组预定义的函数接口,比如Function<T,R>,但我没有找到一个没有参数并且不产生结果的接口。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-08 16:39:30

这真的无关紧要;Runnable也可以。

代码语言:javascript
复制
Consumer<Void>,
Supplier<Void>,
Function<Void, Void>
票数 64
EN

Stack Overflow用户

发布于 2015-09-08 04:53:11

您也可以像这样传递lambda:

代码语言:javascript
复制
public void pass() {
    run(()-> System.out.println("Hello world"));
}

public void run(Runnable function) {
    function.run();
}

这样,您就可以直接将lambda作为方法进行传递。

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

https://stackoverflow.com/questions/25186216

复制
相关文章

相似问题

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