假设我们总是使用 Sun JVM(比如 1.5+),将 Graphics 引用转换为 Graphics2D 总是安全的吗?
我还没有看到它导致任何问题,据我了解,Graphics 类是遗留代码,但 Java 设计人员不想更改 Swing 和 AWT 类的接口以保持向后兼容性。
在 Chet Haase 和 Romain Guy 所著的Filthy Rich Client一书中,他们说 Swing 几乎总是使用Graphics2D
对象。打印和 Swing 的DebugGraphics
对象除外。因此,只要这些情况都不适用于您的代码,就可以安全地转换为Graphics2D
.
两位作者都在 Sun 工作,所以我假设他们知道他们在说什么。
2D 图形轨迹说:
要在应用程序中使用 Java 2D API 功能,请将传入组件的呈现方法的 Graphics 对象转换为 Graphics2D 对象。例如:
public void paint (Graphics g) {
Graphics2D g2 = (Graphics2D) g;
...
}
这是我能找到的最“官方”的来源。直接来自 Sun 的 Java 教程,我想说这是官方认可的做法。不过,如果 JavaDocs 明确说明了这一点,我不会完全介意......