java - 使用没有扩展同一个父类的类的方法
问题描述
我正在使用处理,并且我有一个方法( here),当我在窗口中绘制时以及在图像中绘制时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
只需要一个接受PGraphics
并传入变量的函数。像这样的东西:g
PApplet
void setup(){
size(500, 500);
}
void draw(){
drawCircle(g);
}
void drawCircle(PGraphics pg){
pg.ellipse(mouseX, mouseY, 20, 20);
}
这种方法有点老套,所以更好的解决方案是重构你的PApplet
代码,让它总是PGraphics
显式地绘制。然后你可以将该PGraphics
实例传递给你的函数。
推荐阅读
- javascript - 根据 React-Redux 状态的动态页面不更新渲染数据
- sql - 加速查询,其中包含 count(*) = 0 的结果
- python - form_Valid 函数在 django 中是如何工作的?
- javascript - 在 React 中使用动态复选框计数保存表单数据
- node.js - 使用 next 和没有 next 调用 pre-middleware 的区别
- amazon-web-services - 将大量数据从本地机器加载到 Amazon Elastic Block Store
- outlook - Outlook API,已移至“已发送邮件”的邮件仍标记为“[草稿]”
- c++ - 将确定星期几的公式转换为 C++ 的正确方法是什么?
- angular - 我尝试使用的属性在我控制台记录我的对象时定义时未定义
- bubble-sort - 排序算法 - 冒泡排序