Java 使用其不支持的类的方法';t扩展相同的父类
我正在使用处理,我有一个方法(Java 使用其不支持的类的方法';t扩展相同的父类,java,eclipse,processing,Java,Eclipse,Processing,我正在使用处理,我有一个方法(smooth()这里),我想在窗口中绘制时用于PApplet对象,在图像中绘制时用于PGraphics 问题是,这两个类(PApplet&PGraphics)仅从对象扩展而来,Eclipse说我必须在PApplet强制转换或PGraphics强制转换之间进行选择,但我想在这种情况下同时使用这两个类 如何解决这个问题?没有神奇的方法可以支持两种完全不同的类型。不过,还有一些变通办法 您可以使用重载,这意味着为每种类型创建单独的函数。大概是这样的: void drawR
smooth()
这里),我想在窗口中绘制时用于PApplet
对象,在图像中绘制时用于PGraphics
问题是,这两个类(PApplet
&PGraphics
)仅从对象扩展而来,Eclipse说我必须在PApplet
强制转换或PGraphics
强制转换之间进行选择,但我想在这种情况下同时使用这两个类
如何解决这个问题?没有神奇的方法可以支持两种完全不同的类型。不过,还有一些变通办法
您可以使用重载,这意味着为每种类型创建单独的函数。大概是这样的:
void drawRect(PGraphics pg){
pg.rect(1, 2, 3, 4);
}
void drawRect(PApplet p){
p.rect(1, 2, 3, 4);
}
void setup(){
size(500, 500);
}
void draw(){
drawCircle(g);
}
void drawCircle(PGraphics pg){
pg.ellipse(mouseX, mouseY, 20, 20);
}
或者您可以依赖这样一个事实,即PApplet
类有一个g
变量,该变量引用其内部PGraphics
实例。然后,您只需要一个函数,它接受PGraphics
,并在有PApplet
实例时传入g
变量。大概是这样的:
void drawRect(PGraphics pg){
pg.rect(1, 2, 3, 4);
}
void drawRect(PApplet p){
p.rect(1, 2, 3, 4);
}
void setup(){
size(500, 500);
}
void draw(){
drawCircle(g);
}
void drawCircle(PGraphics pg){
pg.ellipse(mouseX, mouseY, 20, 20);
}
这种方法有点粗糙,因此更好的解决方案是重构PApplet
代码,使其始终显式地绘制PGraphics
。然后您可以将PGraphics
实例传递给您的函数。Hi!如果您可以添加给您带来问题的代码,您将有更好的机会获得一些好的帮助,例如,您试图在哪里/如何向这两个类强制转换,以及Eclipse错误到底是什么。