国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java中Serializable與serialVersionUID

2019-11-06 08:22:32
字體:
來源:轉載
供稿:網友

轉載請保留出處: http://blog.csdn.net/xiaxl/article/details/60114057

Serializable用法serialVersionUID的作用

Android中,使用Serializable方式將對象序列化到數據庫代碼舉例

一、Serializable用法

Serializable用于實現java對象序列化和反序列化。 序列化可以將一個java對象以二進制流的方式持久化到數據庫文件中; 反序列化則是可以把之前持久化在數據庫或文件中的二進制數據,以流的方式讀取出來重新構造成一個和之前相同內容的java對象。

代碼舉例說明

public class SnsBiLogData implements Serializable { PRivate static final long serialVersionUID = 1L; public String time; public String event; //string 事件名 public String ip;//string 訪問ip地址 public String network;//string wifi、3G等 public String app_version;//string app版本 public String Operator;//string 運營商}// 序列化工具類public class SerializeUtil { /** * 序列化對象 * * @throws IOException */ public static byte[] serializeObject(Object object) { ByteArrayOutputStream saos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(saos); oos.writeObject(object); oos.flush(); return saos.toByteArray(); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 反序列化對象 * * @throws IOException * @throws ClassNotFoundException */ public static Object deserializeObject(byte[] buf) { ByteArrayInputStream sais = new ByteArrayInputStream(buf); try { ObjectInputStream ois = new ObjectInputStream(sais); return ois.readObject(); } catch (Exception e) { e.printStackTrace(); } return null; }}

二、serialVersionUID的作用

serialVersionUID有兩種寫法:

一種是private static final long serialVersionUID = 1L; 一種根據類名、接口名、成員方法及屬性等來生成一個64位的哈希字段。比如:private static final long serialVersionUID = -8940196742313994740L;

源碼注釋中這樣寫到:

By default, this identifier is computed by hashing the class declaration and its members. This identifier is included in the serialized form so that version conflicts can be detected during deserialization. If the local {@code serialVersionUID} differs from the {@code serialVersionUID} in the serialized data, deserialization will fail with an {@link InvalidClassException} 默認情況下,serialVersionUID是根據類名、接口名、成員方法及屬性等來生成一個64位的哈希字段。對象在反序列化時,serialVersionUID值不同,會拋出InvalidClassException異常,造成反序列化失敗。 這里寫圖片描述

因此,無論serialVersionUID采用的哪一種寫法,只要其在對象序列化與反序列化過程中保持不變即可。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浮山县| 丹阳市| 新竹市| 怀仁县| 治多县| 台北县| 东山县| 南平市| 连州市| 韶关市| 德安县| 集安市| 潞西市| 比如县| 民乐县| 天等县| 枣强县| 苍山县| 望都县| 垫江县| 沿河| 四会市| 昌吉市| 桐乡市| 临邑县| 池州市| 福建省| 博野县| 碌曲县| 泌阳县| 崇明县| 中超| 茂名市| 景德镇市| 固原市| 石台县| 东丽区| 游戏| 兴义市| 义马市| 怀远县|