目前正在研究Java 8的lambda表达式和方法引用。
我想将一个没有参数和返回值的方法作为参数传递给另一个方法。我是这样做的:
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>
,但我没有找到一个没有参数并且不产生结果的接口。
发布于 2014-08-08 16:39:30
这真的无关紧要;Runnable
也可以。
Consumer<Void>,
Supplier<Void>,
Function<Void, Void>
发布于 2015-09-08 04:53:11
您也可以像这样传递lambda:
public void pass() {
run(()-> System.out.println("Hello world"));
}
public void run(Runnable function) {
function.run();
}
这样,您就可以直接将lambda作为方法进行传递。
https://stackoverflow.com/questions/25186216
复制相似问题