尝试将对象写入扩展java.io.notserializableException
的类中的服务器并实现jpanel
后,我收到serializable
错误但是如果扩展jframe.
< / p>
以下是代码:
//to send to server
objectoutputstream out = new objectoutputstream(socket.getoutputstream());
out.writeobject(myobject);
//to receive in server
objectinputstream in = new objectinputstream(socket.getinputstream());
in.readobject();
感谢您的帮助。
答案 0 :(得分:2)
来自JPanel (Java 2 Platform SE v1.4.2),它说:
警告:此类的序列化对象与将来的Swing版本不兼容。当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。从1.4开始,
java.beans
包中添加了对所有JavaBeans TM 的长期存储的支持。请参阅XMLEncoder。
答案 1 :(得分:1)
JPanel
(myobject
实例)的实现具有对其他对象的引用(例如私有字段),即没有实现Serializable
。而这正是导致异常的其他对象。
答案 2 :(得分:1)
正如@Xeon所说,为myobject提供impl。正如您所说的异常来自Object类,这仅仅意味着您的类或任何类成员ie字段(它是一个对象,而不是一个premitive类型)没有实现Serializable接口。
另外你如何在那里创建myobject?直接
对象myobject = ...
要么
myobject = ....
?
确保每个人都实现可序列化。
Object类提供方法但不实现可序列化的接口,否则Java中的每个对象都可以默认序列化!