我用 Java 编写了一个程序,它使用了 Processing 中的 PApplet 类。此类在后台实例化一个 PApplet 对象。我需要在其他一些类中引用这个对象,所以我使用了这个小技巧:
public class MyApplet extends PApplet {
public static MyApplet myApplet;
// plus other various fields...
// initializing block
{
myApplet = this;
}
// stuff...
}
// Now in some other class
import static MyApplet.myApplet;
class OtherClass {
// here I can use the reference to myapplet
myApplet.whatever();
}
一切都很好,很酷。但后来我想将所有这些代码翻译成 Groovy。问题是 Groovy 的闭包很早就在声明时对变量进行了“快照”——因此他们认为该myapplet
字段没有被初始化。Groovy 很早就完成了它的工作,甚至早于初始化块。至少这是我对为什么myapplet
在 Groovy 类中被视为 null 的解释。
我该如何规避这个?如何获取对在PApplet
幕后构建的小程序对象的引用?