Java可序列化哈希映射到ByteArray以创建blob
当我尝试时,我收到以下消息错误:
爪哇。木卫一。NotSerializableException:
private HashMap<String, XlsData> myMap= new HashMap<String, XlsData>();
ByteArrayOutputStream bObj = new ByteArrayOutputStream();
ObjectOutputStream out;
try {
out = new ObjectOutputStream(bObj);
if(myMap != null){
out.writeObject(myMap);
out.close();
bObj.close();
byte[] byteOut = bObj.toByteArray();
}
} catch (IOException e) {
e.printStackTrace();
}
public class XlsData implements Serializable {
private String dataA;
private String dataB;
public String getDataA() {
return dataA;
}
public void setDataA(String dataA) {
this.dataA= dataA;
}
public String getDataB() {
return dataB;
}
public void setDataB(String dataB) {
this.dataB= dataB;
}
}
什么是必要的工作良好?可以看到,我的内部类也实现了serializabe类
# 1 楼答案
最有可能的情况是,地图中的一个元素不可序列化。或者映射的一个元素包含一个既不可序列化也不临时的成员。只要看看地图,你就会找到答案
# 2 楼答案
您的
XlsData
类必须是静态内部类:因为它不是静态的,所以其行为类似于非静态字段:它只能作为外部类实例的一部分存在。当序列化非静态内部类的实例时,还序列化了封闭的外部类对象,我猜它是不可序列化的(或者它的一个或多个字段是不可序列化的)