Java:Graphics2D無法序列化
如何序列化Graphics2D?我正在製作一款平臺遊戲,我想要一個使用序列化的保存/加載系統。
java.io.NotSerializableException: sun.java2d.SunGraphics2D
它打印此例外。有什麼辦法可以序列化Graphics2D嗎?
Java:Graphics2D無法序列化
如何序列化Graphics2D?我正在製作一款平臺遊戲,我想要一個使用序列化的保存/加載系統。
java.io.NotSerializableException: sun.java2d.SunGraphics2D
它打印此例外。有什麼辦法可以序列化Graphics2D嗎?
不,Graphics2D
(以及其他處理圖形,聲音或網絡的類)的實例通常不是Serializable
。您應該嘗試從處理渲染的代碼中分離需要保存的數據。
如果這是不可能的,那麼你應該把你的Graphics2D
字段標記爲transient
。這樣,序列化系統在保存時跳過Graphics2D
字段。加載後,您可以將Graphics2D
字段設置爲您手動創建的新實例。
我在哪裏放置瞬態?在他之前 – PQx
您在要序列化的類中在'Graphics2D'類型字段的定義中放入'transient'。 – maksimov
私人無效的init(){ \t \t \t 圖像0=新的BufferedImage( \t \t \t \t \t WIDTH,HEIGHT, \t \t \t \t \t BufferedImage.TYPE_INT_RGB \t \t \t \t); \t \t g =(Graphics2D)image.getGraphics(); \t \t \t \t running = true; \t \t \t \t rms = new RoomManager(this); \t \t \t} \t \t 這產生了一個錯誤,說圖像不seralizable。我已將它標記爲瞬態... – PQx
您是否試過使用createGraphics()
而不是getGraphics()
? getGraphics()
保持向後兼容性,但不建議使用它
如果可以,您應該專注於保存狀態而不是對象。 – MadProgrammer