Java2D:将图形转换为图形2D是否始终安全

2022-09-01 04:38:57

假设我们总是使用 Sun JVM(比如 1.5+),那么将图形引用投射到 Graphics2D 是否总是安全的?

我还没有看到它引起任何问题,据我所知,Graphics类是遗留代码,但Java设计人员不想更改Swing和AWT类的接口以保持向后兼容性。


答案 1

根据这里的讨论,图形转换为图形2D总是安全的。然而,我无法很快找到关于此事的官方Sun声明。

从图形转换为Graphics2D之所以有效,是因为Sun已经说过,在Java 1.2或更高版本中API返回的所有图形对象都将是Graphics2D的子类。

这里有另一个提示,同样的结论。

图形对象始终可以投射图形2D g2d = (图形2D)g;


答案 2

在Chet Haase和Romain Guy的《肮脏的富客户》(Dirtthy Rich Client)一书中,他们说Swing几乎总是使用对象。例外情况是打印和Swing的对象。因此,只要这些情况都不适用于您的代码,就可以安全地转换为 。
两位作者都在Sun工作,所以我假设他们知道自己在说什么。Graphics2DDebugGraphicsGraphics2D


推荐