【发布时间】:2016-09-26 06:01:36
【问题描述】:
我有以下 Java 类:
public class GetCardInfoRequest implements RequestBase, java.io.Serializable{
public String CardID;
public String CardUniqueID;
public String who;
public String pass;
public GetCardInfoRequest(){}
public GetCardInfoRequest(String id, String uniqueid, String who, String pass){
CardID = id;
CardUniqueID = uniqueid;
this.who = who;
this.pass = pass;
}
@Override
public RequestType getRequestType() {
return RequestType.GetCardInfo;
}
public String getCardID() {
return CardID;
}
public String getCardUniqueID() {
return CardUniqueID;
}
}
我遇到了序列化问题。我一直在阅读有关 java 序列化的教程,但它们似乎都暗示使对象可序列化就像简单地实现“java.IO.Serializable”接口一样简单,唯一需要注意的是没有不可序列化的字段班级。
正如您在此处看到的,我实现了 java.io.Serializable,并且我的所有字段都是简单的字符串(注意:我实现的“RequestBase”接口只是说该类必须具有 getRequestType 方法,仅此而已)。 但是,当我尝试将类的实例序列化为字节数组时,如下所示:
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream o = new ObjectOutputStream(b);
o.writeObject(req);
request = b.toByteArray();
引发了“Java.io.NotSerializableException”。 (第三行)
我敢肯定这是些微不足道的事情,但由于所有教程都非常通用,我不明白这个非常简单的代码有什么问题。有人可以帮忙吗?
【问题讨论】:
-
我们可以有堆栈跟踪吗?顺便说一句,添加
private static final long serialVersionUID -
'o.writeObject(req);'什么是请求?
-
请使用小写的成员变量名
标签: java serialization