簡體   English   中英

Java可序列化的HashMap到ByteArray用於創建Blob

[英]Java serializable HashMap to ByteArray for creating a blob

嘗試時,出現此消息錯誤:

java.io.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類。

您的XlsData類需要是一個靜態內部類:

public static class XlsData implements Serializable {

因為它不是靜態的,所以它的行為就像一個非靜態字段:它只能作為外部類實例的一部分存在。 當序列化一個非靜態內部類的實例時,您還將序列化封閉的外部類對象,我猜這是不可序列化的(或其一個或多個字段不可序列化)。

最有可能的是,您所映射的元素之一只是不可序列化的。 或者,映射的元素包含既不可序列化也不瞬態的成員。 只需翻閱地圖,即可找到答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM