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

我的问题是,当我需要绘制当前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方法。然后,在您的drawRectangle等类中覆盖Circle。那你就可以

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

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

10-13 03:34