Java 扩展Graphics2D-强制转换导致异常

Java 扩展Graphics2D-强制转换导致异常,java,Java,我正试图通过创建一个2D游戏来提高我的Java能力。我已经成功地创建了一个基本的游戏,现在回顾我所做的事情,看看我可以改进什么,我正在重新构造代码。我以前有一个drawObject方法,其中绘制一个GameObject(我为我的游戏创建的另一个类),该类必须将Graphics2D对象传递给它,但是现在我尝试扩展Graphics2D,并将我创建的所有“draw(X)”方法构建到该扩展类中,这样我就不必传递Graphics2D对象,但是我有困难 我按如下方式开始这个类:公共抽象类GameGraphi

我正试图通过创建一个2D游戏来提高我的Java能力。我已经成功地创建了一个基本的游戏,现在回顾我所做的事情,看看我可以改进什么,我正在重新构造代码。我以前有一个drawObject方法,其中绘制一个GameObject(我为我的游戏创建的另一个类),该类必须将Graphics2D对象传递给它,但是现在我尝试扩展Graphics2D,并将我创建的所有“draw(X)”方法构建到该扩展类中,这样我就不必传递Graphics2D对象,但是我有困难

我按如下方式开始这个类:
公共抽象类GameGraphics扩展Graphics2D
。Eclipse中没有出现错误,所以我运行它,但是在渲染时出现错误,指出
sun.java2d.SunGraphics2D
不能强制转换到扩展它的类的实例

错误出现在以下行:
GameGraphics graphics=(GameGraphics)strategy.getDrawGraphics()

尽管事实上我需要使用Graphics2D中的特定方法,但我试图让它扩展Graphics,以查看会发生什么。我修改了对Graphics2D函数的调用,没有发现任何错误,但是当我运行它时,我得到了完全相同的错误。即使是日晒部分也是一样的

在我看来,显而易见的解决办法是让类只包含Graphics2D的实例,而不是扩展Graphics2D,但是如果可能的话,我更喜欢扩展


任何帮助都将不胜感激

问题是在这一行:

GameGraphics graphics = (GameGraphics) strategy.getDrawGraphics();

从策略对象获得的图形对象不是GameGraphics对象,因此将其强制转换不会使其成为GameGraphics对象。只有当你可以修改策略,使它实际上产生一个GameGraphics对象时,施法才会起作用,尽管我不确定你是否想这样做或者可以这样做(至少不容易)。正如Kayaman所说——使用组合来获得你想要的,而不是继承

您不打算扩展
图形2d
。平台本机版本是对其进行扩展的版本。更喜欢组合而不是继承,在这种情况下你甚至没有选择。非常感谢!好的。啊,好的。谢谢我甚至试着转换到Graphics2D(这没有问题),然后转换到更具体的游戏图形,所以我只是假设它可以工作。@VortixDev:对象是Graphics2D对象