通过java套接字发送对象
我正在尝试使用java套接字发送以下类的对象:通过java套接字发送对象,java,sockets,object,serialization,Java,Sockets,Object,Serialization,我正在尝试使用java套接字发送以下类的对象: public class CommunicationObj implements Serializable{ private String ID; public AuthenticationParams s = new AuthenticationParams(); public CommunicationObj(String s){ ID = s; } public String getID
public class CommunicationObj implements Serializable{
private String ID;
public AuthenticationParams s = new AuthenticationParams();
public CommunicationObj(String s){
ID = s;
}
public String getID(){
return ID;
}
}
但发送以下类的对象会引发异常(无法发送该对象),但以下代码可以工作
public class CommunicationObj implements Serializable{
private String ID;
public CommunicationObj(String s){
ID = s;
}
public String getID(){
return ID;
}
}
为什么AuthenticationParams
对象会在这里产生这样的问题?任何帮助都将不胜感激。
注意:使用的所有类和包都与服务器和客户端相同。如果
AuthenticationParams
或AuthenticationParams
本身的任何部分未标记为可序列化,则序列化将失败
事实上,类的每个部分的每个部分都必须是可序列化的,或者由于某种原因无法序列化的字段应该被赋予
transient
修饰符,这表明该对象不应该包括在序列化过程中。AuthenticationParams
类可能不可序列化。您可以添加transient
修饰符,将其从序列化中丢弃,如下所示:
public transient AuthenticationParams s = new AuthenticationParams();
但是,如果希望在序列化形式中包含此对象,则只能使AuthenticationParams类可序列化
序列化规则:从实例(要序列化的对象实例)引用的所有非瞬态对象也必须是可序列化的
不:您可以使用java.io.Externalizable接口来开发自定义序列化机制。AuthenticationParams也可序列化吗?将来使用代码按钮“{}”-来格式化代码,而不是
标记。VincentRamdhanie解决了问题:)