我如何传递一个函数作为处理中的类的输入

问题描述:

我正在制作一个处理分形的框架,但是,我需要使用函数作为类的构造函数的参数。 喜欢的东西:我如何传递一个函数作为处理中的类的输入

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函数”将返回大量结果。

this answer

public void pass() { 
    run(()-> System.out.println("Hello world")); 
} 

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

取决于你如何使用处理,则可能与第一种方法被卡住虽然,因为我不认为处理编辑器支持Java 8呢。

+0

谢谢,它工作得很好。并且你对我的JavaScript是正确的。 – Nikos