首先,我做了一个“游戏渲染器”。
我的问题是,当我需要绘制当前Element时:我需要知道它是Rectangle,Circle还是Image等。
我的课程(矩形,圆形,...)是从图形学扩展的。
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
方法。然后,在您的draw
,Rectangle
等类中覆盖Circle
。那你就可以
for(index = 0;index < graphicObjects.size();index++){
currentElement = graphicObjects.get(index);
currentElement.draw();
}
关于java - Java-instanceof,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30002833/