2009-10-08 60 views
19

爲什麼Swing JComponent類實現接口Serializable?我實現視圖的方式是無狀態的,所有狀態數據都存儲在演示模型中。所以我不需要序列化我的觀點。我已使用@SuppressWarnings("serial")註釋刪除警告。有更好的方法去除它們嗎?Swing組件和序列化

+4

*方法* Java API的太多部分實現Serializable。就個人而言,除非我真的在編寫使用序列化的代碼,否則我只是在構建/ IDE中關閉序列化警告。 –

回答

15

開始時,GUI構建器將以串行格式保存UI。 applet標籤甚至有一個屬性可以從序列化的形式加載(我不知道誰使用過它,我只是用它來惡意)。不幸的是,使用GUI的序列化機制實際上並不成功。 Swing只保證在同一主要版本中的兼容性(我猜測即使這種測試也很少)。

3

爲什麼Swing JComponent類實現接口Serializable?

雖然這允許您序列化類並將它們發送到客戶端和服務器並從客戶端和服務器發送它們,但這似乎並不是直觀的場景。有一個更好的機會,仍然很渺茫,有人可能想要將組件序列化到一個文件。這將允許這種序列化。

是否有更好的方法來刪除[警告]?

您可以實例化serialVersionUID,但是如果您這樣做,則需要在對類進行更改時對其進行維護。這似乎是矯枉過正。正如Laurence Gonsalves在他的評論中指出的,另一種選擇是在Preferences-> Java-> Compiler-> Errors/Warnings-> Potential Programming Problems字段中完全禁止警告。