我正在使用Processing,并且我有一个方法(这里是smooth()
),当我在窗口中绘制时,我想将其用于PApplet
对象,并且当我绘制图像时 PGraphics
。
问题是,这两个类(PApplet
和 PGraphics
)仅从 Object
类扩展,Eclipse 说我必须在PApplet
转换或 PGraphics
转换,但我想在这种情况下使用两者。
我该如何解决这个问题?
最佳答案
没有一种神奇的方法可以支持两种完全不同的类型。不过,有一些解决方法。
您可以使用重载,这意味着为每种类型创建单独的函数。像这样的事情:
void drawRect(PGraphics pg){
pg.rect(1, 2, 3, 4);
}
void drawRect(PApplet p){
p.rect(1, 2, 3, 4);
}
或者您可以依赖这样一个事实:PApplet
类有一个 g
变量,该变量引用其内部 PGraphics
实例。然后,当您有一个 PApplet
实例时,您只需要一个接受 PGraphics
并传入 g
变量的函数。像这样的事情:
void setup(){
size(500, 500);
}
void draw(){
drawCircle(g);
}
void drawCircle(PGraphics pg){
pg.ellipse(mouseX, mouseY, 20, 20);
}
这种方法有点 hacky,因此更好的解决方案是重构您的 PApplet
代码,以便它始终显式绘制到 PGraphics
。然后您可以将该 PGraphics
实例传递给您的函数。
关于java - 使用未扩展同一父类的类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56086325/