我希望能够在可序列化的类中引用PApplet,而不必将PApplet扩展或传递给构造函数。是否有可能做到这一点?这是我失败的尝试:
import java.io.*;
static PApplet p = new PApplet();
Foo f = new Foo();
void setup()
{
f.render();
}
static class Foo implements Serializable
{
void render()
{
p.rect(10,10,10,10);
}
}
答案 0 :(得分:0)
根据Java语法,您需要将代码封装在类中。所有这些陈述
static PApplet p = new PApplet();
Foo f = new Foo();
void setup()
{
f.render();
}
现在正在zombie的世界中,编译器会抛出编译错误。
答案 1 :(得分:0)
有点不清楚你在问什么:你的PApplet实例是否必须是静态的?你的Foo类必须是静态的吗?或者你刚才让它们变得静止,因为你认为你必须这样做?
为什么需要单独的PApplet实例?如果这是来自加工草图,那么您已经"在" PApplet的一个实例,您可以使用此关键字来引用。
这是您的代码,稍加修改后使用this关键字:
import java.io.*;
PApplet p = this;
Foo f = new Foo();
void setup()
{
f.render();
}
class Foo implements Serializable
{
void render()
{
p.rect(10,10,10,10);
}
}
但是,这个关键字(和p变量)并不是必需的。这段代码做了同样的事情:
import java.io.*;
Foo f = new Foo();
void setup()
{
f.render();
}
class Foo implements Serializable
{
void render()
{
rect(10,10,10,10);
}
}
就像我说的那样,有点不清楚你在问什么,所以也许你需要p变量。答案是只使用this关键字并删除静态关键字。