将Graphics对象转换为Graphics2D的子类

时间:2017-04-29 23:11:20

标签: java graphics casting graphics2d classcastexception

我正在创建一个扩展Graphics2D的类。在这个类中,我基于现有方法创建了一些自己的方法,例如绘制以点为中心的圆的方法。我希望这样做,所以我不必为渲染形状调用几个不同的类 - 相反,我只会调用一个统一的类。

我目前的问题是创建这个对象,我称之为GraphicsEngine。在扩展Canvas的游戏线程中,我创建了一个图形对象,然后我尝试将其转换为GraphicsEngine对象(为了清晰起见,在下面略微扩展):

GraphicsEngine graphicsEngine;

private void render(){
        BufferStrategy bufferStrategy = getBufferStrategy();
        if(bufferStrategy == null)
        {
            createBufferStrategy(3);
            return;
        }
        Graphics g = bufferStrategy.getDrawGraphics();
        Graphics2D g2d = (Graphics2D) g;
        graphicsEngine = (GraphicsEngine)g2d;
}

当我尝试初始化GraphicsEngine对象时,我得到一个ClassCastException。 (

Link to my GraphicsEngine class to prevent clutter

我想知道为什么我得到这个例外,因为我没有引入任何新的变量 - 只有方法,我认为这些方法在投射中不重要。由于Graphics可以转换为Graphics2D,我原以为它也可以转换为Graphics2D的子类。我很感激任何帮助,理解为什么不是这种情况或我在这个过程中犯了什么错误。此外,我将非常感谢帮助GraphicsEngine对象的初始化工作。 干杯!

0 个答案:

没有答案