Swing组件和序列化

时间:2009-10-08 19:26:41

标签: java swing

为什么Swing JComponent类实现了接口Serializable?我实现视图的方式是无状态,所有状态数据都存储在Presentation Model中。所以我不需要序列化我的观点。我使用@SuppressWarnings("serial")注释来删除警告。有没有更好的方法来删除它们?

2 个答案:

答案 0 :(得分:16)

一开始,GUI构建器将以序列化格式保存UI。 applet标签甚至还有一个从序列化表单加载的属性(我不知道有谁使用过它,我只是用它来表示恶意)。不幸的是,使用GUI的序列化机制并不真正起作用。 Swing只保证在同一个主要版本中的兼容性(我猜测即使是很少的测试)。

答案 1 :(得分:3)

  

为什么Swing JComponent类实现了Serializable接口?

虽然这允许您序列化类并将它们发送到客户端和服务器,但这似乎不是一个直观的场景。有人可能希望将组件序列化到文件中,这是一个更好的机会。这将允许这种序列化。

  

是否有更好的方法可以删除[警告]?

您可以实例化serialVersionUID,但如果您这样做,则需要在更改类时对其进行维护。这看起来有点矫枉过正。正如Laurence Gonsalves在评论中指出的另一个选择是在首选项 - > Java->编译器 - >错误/警告 - >潜在编程问题字段中完全取消警告。