如何在Processing中传递函数作为类的输入

时间:2017-10-15 23:51:15

标签: function processing

我正在制作一个用于在处理中进行分形的框架,但是,我需要使用函数作为类的构造函数的参数。 类似的东西:

class Fractal {
   String name;
   void initialize;
   Fractal(String Name, void setup) {
      ...
   }
}

1 个答案:

答案 0 :(得分:1)

我猜你是来自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开始,您可以将对函数的引用作为参数传递。这称为 lambda函数。谷歌搜索“Java lambda函数”将返回大量的结果。

来自this answer

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

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

根据您使用Processing的方式,您可能会遇到第一种方法,因为我认为Processing编辑器还不支持Java 8。