【问题标题】:Using methods of classes that its didn't extends the same parent class使用没有扩展同一个父类的类的方法
【发布时间】:2019-05-11 00:44:11
【问题描述】:

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

问题是,这两个类(PAppletPGraphics)仅从Object 类扩展,Eclipse 说我必须在PApplet 演员或PGraphics 演员之间进行选择,但我想使用在这种情况下。

我该如何解决这个问题?

【问题讨论】:

  • 嗨!如果您可以添加给您带来问题的代码,您将有更好的机会获得一些好的帮助,即您尝试在哪里/如何对这两个类进行强制转换,以及 Eclipse 错误到底是什么。

标签: java eclipse processing


【解决方案1】:

没有一种神奇的方法可以支持两种完全不同的类型。不过有几个解决方法。

您可以使用重载,这意味着为每种类型创建单独的函数。像这样的:

void drawRect(PGraphics pg){
  pg.rect(1, 2, 3, 4);
}

void drawRect(PApplet p){
  p.rect(1, 2, 3, 4);
}

或者您可以依赖 PApplet 类具有引用其内部 PGraphics 实例的 g 变量这一事实。然后你只需要一个函数,当你有一个PApplet 实例时,它需要一个PGraphics 并传入g 变量。像这样的:

void setup(){
 size(500, 500); 
}

void draw(){
 drawCircle(g); 
}

void drawCircle(PGraphics pg){
  pg.ellipse(mouseX, mouseY, 20, 20);
}

这种方法有点老套,因此更好的解决方案是重构您的 PApplet 代码,使其始终显式地使用 PGraphics。然后你可以将 PGraphics 实例传递给你的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2017-07-27
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多