我如何传递一个函数作为处理中的类的输入
问题描述:
我正在制作一个处理分形的框架,但是,我需要使用函数作为类的构造函数的参数。 喜欢的东西:我如何传递一个函数作为处理中的类的输入
class Fractal {
String name;
void initialize;
Fractal(String Name, void setup) {
...
}
}
答
我会想你是从一个JavaScript的背景来吗?
传统上,Java并没有真正有办法做到这一点。相反,你会传递一个匿名实例的接口的,就像这样:
interface Runner{
public void run();
}
class Fractal {
String name;
Runner initialize;
Fractal(String name, Runner setup) {
...
}
}
Runner r = new Runner(){
public void run(){
// whatever
}
}
Fractal fractal = new Fractal("name here", r);
注意,Java提供了一个Runnable
界面,您可以改用创建自己的,但我想拼出来这里让它更加明显。
从Java 8开始,您可以将对函数的引用作为参数传递。这称为拉姆达函数。谷歌搜索“Java lambda函数”将返回大量结果。
public void pass() {
run(()-> System.out.println("Hello world"));
}
public void run(Runnable function) {
function.run();
}
取决于你如何使用处理,则可能与第一种方法被卡住虽然,因为我不认为处理编辑器支持Java 8呢。
谢谢,它工作得很好。并且你对我的JavaScript是正确的。 – Nikos