簡體   English   中英

Java2D:將Graphics轉換為Graphics2D總是安全的

[英]Java2D: Is it always safe to cast Graphics into Graphics2D

假設我們總是使用Sun JVM(比如1.5+),那么將Graphics引用轉換為Graphics2D總是安全的嗎?

我還沒有看到它導致任何問題,據我所知,Graphics類是遺留代碼,但Java設計者不希望更改Swing和AWT類的接口以保持向后兼容性。

根據這里的討論, GraphicsGraphics2D總是安全的 但是,我無法快速找到關於此的官方Sun聲明。

從Graphics轉換為Graphics2D是有效的原因是因為Sun已經說過Java 1.2或更高版本中API返回的所有Graphics對象都是Graphics2D的子類。

這里的另一個暗示有相同的結論。

Graphics Object總是可以轉換為Graphics2D g2d =(Graphics2D)g;

在Chet Haase和Romain Guy的書Filthy Rich Client中 ,他們說Swing幾乎總是使用Graphics2D對象。 例外情況是打印和Swing的DebugGraphics對象。 因此,只要這些情況都不適用於您的代碼,就可以安全地轉換為Graphics2D
兩位作者都在Sun工作,所以我認為他們知道他們在談論什么。

2D Graphics Trail說:

要在應用程序中使用Java 2D API功能,請將傳遞到組件的呈現方法中的Graphics對象轉換為Graphics2D對象。 例如:

public void paint (Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    ...
}

這是我能找到的最“官方”的來源。 直接來自Sun的Java教程,我會說這是官方認可的方式。 如果JavaDocs拼寫出來,我不會完全明白,不過......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM