gpt4 book ai didi

Java-instanceof

转载 作者:行者123 更新时间:2023-12-01 22:20:16 29 4
gpt4 key购买 nike

首先,我制作了一个“游戏渲染器”。

我的问题是,当我需要绘制当前元素时:我需要知道它是矩形、圆形还是图像等。

我的类(矩形、圆形...)是从图形扩展而来的。

public class Rectangle extends Graphic {...}

如果我想画它们,我会在列表 ArrayList<Graphic> 中查找

for(index = 0;index < graphicObjects.size();index++){
currentElement = graphicObjects.get(index);

if(currentElement instanceof Rectangle) { // Here is an error.
Rectangle r = (Rectangle) currentElement;
// here the drawing.
}
}

感谢您的帮助(Goggle 没有帮助):)

编辑:

错误是:“条件操作数类型图形和矩形不兼容”

为什么我需要知道类型:我的代码:

public static Image getImage(Graphics g,int width, int height) {
int imgWidth = width;
int imgHeight = height;
BufferedImage bfImage = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_ARGB);
Graphics graphics = bfImage.getGraphics();

for (int index = 0; index < grObjList.size(); index++) {
Graphic gr = grObjList.get(index);
if(gr instanceof Rectangle){
graphics.setColor(gr.color);
graphics.fillRect(gr.x, gr.y, gr.width, gr.height);
}
}
return bufferedImagetoImage(bfImage);
}

最佳答案

要避免使用 instanceOf,请让 Graphic 实现抽象 draw 方法。然后,重写 RectangleCircle 等类中的 draw。然后你就可以做

for(index = 0;index < graphicObjects.size();index++){
currentElement = graphicObjects.get(index);
currentElement.draw();
}

关于Java-instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002833/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com