java - 使用未扩展同一父类的类的方法

标签 java eclipse processing

我正在使用Processing,并且我有一个方法(这里是smooth()),当我在窗口中绘制时,我想将其用于PApplet对象,并且当我绘制图像时 PGraphics

问题是,这两个类(PAppletPGraphics)仅从 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/

相关文章:

json - 如何从json数组中获取字符串(处理)

java - Hazelcast 实现 java.io.NotSerializedException 时出现错误 JCache

java - 如何使用 AsyncTask 读取 HTTP 响应?

java - 字符串 "For input string: "-l"被执行并输出,即使它不存在于代码中(java线程)

java - 带有处理功能的 Skype API 或 Arduino

java - RGB 转飞利浦 Hue (HSB)

java - Apache Storm 应用程序运行失败

Java Swing 使用主框架来获取其他组件

java - 如何实现 PushCacheFilter

java - 使用同一个 eclipse.ini 文件安装多个 eclipse 最简单的方法是什么?