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错误到底是什么。